├── .gitignore ├── .gitmodules ├── README.md ├── colors ├── evening.vim └── moria.vim ├── doc ├── arabic.cnx ├── autocmd.cnx ├── bufexplorer.txt ├── change.cnx ├── cmdline.cnx ├── debug.cnx ├── debugger.cnx ├── develop.cnx ├── diff.cnx ├── digraph.cnx ├── editing.cnx ├── eval.cnx ├── farsi.cnx ├── filetype.cnx ├── fold.cnx ├── ft_ada.cnx ├── ft_sql.cnx ├── gui.cnx ├── gui_w16.cnx ├── gui_w32.cnx ├── gui_x11.cnx ├── hangulin.cnx ├── hebrew.cnx ├── help.cnx ├── howto.cnx ├── if_cscop.cnx ├── if_mzsch.cnx ├── if_ole.cnx ├── if_perl.cnx ├── if_pyth.cnx ├── if_ruby.cnx ├── if_sniff.cnx ├── if_tcl.cnx ├── indent.cnx ├── index.cnx ├── insert.cnx ├── intro.cnx ├── map.cnx ├── mbyte.cnx ├── message.cnx ├── mlang.cnx ├── motion.cnx ├── netbeans.cnx ├── options.cnx ├── os_390.cnx ├── os_amiga.cnx ├── os_beos.cnx ├── os_dos.cnx ├── os_mac.cnx ├── os_mint.cnx ├── os_msdos.cnx ├── os_os2.cnx ├── os_qnx.cnx ├── os_risc.cnx ├── os_unix.cnx ├── os_vms.cnx ├── os_win32.cnx ├── pattern.cnx ├── pi_getscript.cnx ├── pi_gzip.cnx ├── pi_netrw.cnx ├── pi_paren.cnx ├── pi_spec.cnx ├── pi_tar.cnx ├── pi_vimball.cnx ├── pi_zip.cnx ├── print.cnx ├── quickfix.cnx ├── quickref.cnx ├── quotes.cnx ├── recover.cnx ├── remote.cnx ├── repeat.cnx ├── rileft.cnx ├── russian.cnx ├── scroll.cnx ├── sign.cnx ├── spell.cnx ├── sponsor.cnx ├── starting.cnx ├── syntax.cnx ├── tabpage.cnx ├── tags ├── tags-cn ├── tagsrch.cnx ├── term.cnx ├── tips.cnx ├── todo.cnx ├── uganda.cnx ├── undo.cnx ├── usr_01.cnx ├── usr_02.cnx ├── usr_03.cnx ├── usr_04.cnx ├── usr_05.cnx ├── usr_06.cnx ├── usr_07.cnx ├── usr_08.cnx ├── usr_09.cnx ├── usr_10.cnx ├── usr_11.cnx ├── usr_12.cnx ├── usr_20.cnx ├── usr_21.cnx ├── usr_22.cnx ├── usr_23.cnx ├── usr_24.cnx ├── usr_25.cnx ├── usr_26.cnx ├── usr_27.cnx ├── usr_28.cnx ├── usr_29.cnx ├── usr_30.cnx ├── usr_31.cnx ├── usr_32.cnx ├── usr_40.cnx ├── usr_41.cnx ├── usr_42.cnx ├── usr_43.cnx ├── usr_44.cnx ├── usr_45.cnx ├── usr_90.cnx ├── usr_toc.cnx ├── various.cnx ├── version4.cnx ├── version5.cnx ├── version6.cnx ├── version7.cnx ├── vi_diff.cnx ├── visual.cnx ├── windows.cnx ├── winmanager.txt └── workshop.cnx ├── gvimrc ├── install.sh ├── vimrc └── vimrc.vundle /.gitignore: -------------------------------------------------------------------------------- 1 | # ignore bundled submodule 2 | bak 3 | tmp 4 | vimrc.path 5 | 6 | -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "bundle/vundle"] 2 | path = bundle/vundle 3 | url = git://github.com/gmarik/vundle.git 4 | [submodule "bundle/vim-autoclose"] 5 | path = bundle/vim-autoclose 6 | url = git://github.com/Townk/vim-autoclose.git 7 | [submodule "bundle/ack.vim"] 8 | path = bundle/ack.vim 9 | url = git://github.com/mileszs/ack.vim.git 10 | [submodule "bundle/vim-bufexplorer"] 11 | path = bundle/vim-bufexplorer 12 | url = git://github.com/thisivan/vim-bufexplorer.git 13 | [submodule "bundle/tagbar"] 14 | path = bundle/tagbar 15 | url = git://github.com/majutsushi/tagbar 16 | [submodule "bundle/tagbar-phpctags"] 17 | path = bundle/tagbar-phpctags 18 | url = git://github.com/techlivezheng/tagbar-phpctags.git 19 | [submodule "bundle/nerdtree"] 20 | path = bundle/nerdtree 21 | url = git://github.com/scrooloose/nerdtree.git 22 | [submodule "bundle/nerdcommenter"] 23 | path = bundle/nerdcommenter 24 | url = git://github.com/scrooloose/nerdcommenter.git 25 | [submodule "bundle/syntastic"] 26 | path = bundle/syntastic 27 | url = git://github.com/scrooloose/syntastic.git 28 | [submodule "bundle/YankRing.vim"] 29 | path = bundle/YankRing.vim 30 | url = git://github.com/vim-scripts/YankRing.vim.git 31 | [submodule "bundle/vim-fugitive"] 32 | path = bundle/vim-fugitive 33 | url = git://github.com/tpope/vim-fugitive.git 34 | [submodule "bundle/vim-repeat"] 35 | path = bundle/vim-repeat 36 | url = git://github.com/tpope/vim-repeat 37 | [submodule "bundle/vim-surround"] 38 | path = bundle/vim-surround 39 | url = git://github.com/tpope/vim-surround 40 | [submodule "bundle/vim-eunuch"] 41 | path = bundle/vim-eunuch 42 | url = git://github.com/tpope/vim-eunuch 43 | [submodule "bundle/vim-markdown"] 44 | path = bundle/vim-markdown 45 | url = git://github.com/tpope/vim-markdown 46 | [submodule "bundle/vim-endwise"] 47 | path = bundle/vim-endwise 48 | url = git://github.com/tpope/vim-endwise 49 | [submodule "bundle/xmledit"] 50 | path = bundle/xmledit 51 | url = git://github.com/sukima/xmledit.git 52 | [submodule "bundle/matchit.zip"] 53 | path = bundle/matchit.zip 54 | url = git://github.com/vim-scripts/matchit.zip.git 55 | [submodule "bundle/vim-easymotion"] 56 | path = bundle/vim-easymotion 57 | url = git://github.com/Lokaltog/vim-easymotion.git 58 | [submodule "bundle/neosnippet"] 59 | path = bundle/neosnippet 60 | url = git://github.com/Shougo/neosnippet.git 61 | [submodule "bundle/neocomplcache"] 62 | path = bundle/neocomplcache 63 | url = git://github.com/Shougo/neocomplcache 64 | [submodule "bundle/OmniCppComplete"] 65 | path = bundle/OmniCppComplete 66 | url = git://github.com/vim-scripts/OmniCppComplete 67 | [submodule "bundle/vim-haml"] 68 | path = bundle/vim-haml 69 | url = git://github.com/tpope/vim-haml.git 70 | [submodule "bundle/vim-javascript"] 71 | path = bundle/vim-javascript 72 | url = git://github.com/pangloss/vim-javascript 73 | [submodule "bundle/vim-php-cs-fixer"] 74 | path = bundle/vim-php-cs-fixer 75 | url = git://github.com/stephpy/vim-php-cs-fixer.git 76 | [submodule "bundle/vim-php-namespace"] 77 | path = bundle/vim-php-namespace 78 | url = git://github.com/arnaud-lb/vim-php-namespace.git 79 | [submodule "bundle/phpcomplete.vim"] 80 | path = bundle/phpcomplete.vim 81 | url = git://github.com/shawncplus/phpcomplete.vim.git 82 | [submodule "bundle/PDV--phpDocumentor-for-Vim"] 83 | path = bundle/PDV--phpDocumentor-for-Vim 84 | url = git://github.com/vim-scripts/PDV--phpDocumentor-for-Vim.git 85 | [submodule "bundle/vim-jquery"] 86 | path = bundle/vim-jquery 87 | url = git://github.com/itspriddle/vim-jquery.git 88 | [submodule "bundle/php.vim"] 89 | path = bundle/php.vim 90 | url = git://github.com/shawncplus/php.vim.git 91 | [submodule "bundle/php-search-doc"] 92 | path = bundle/php-search-doc 93 | url = git://github.com/erikfercak/php-search-doc.git 94 | [submodule "bundle/ctrlp.vim"] 95 | path = bundle/ctrlp.vim 96 | url = git://github.com/kien/ctrlp.vim.git 97 | [submodule "bundle/vim-easytags"] 98 | path = bundle/vim-easytags 99 | url = git://github.com/xolox/vim-easytags.git 100 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | vimrc for UNIX Web Developers (PHP/C/C++/Lua/JavaScript/HTML/CSS) 2 | ============ 3 | 4 | 5 | Goal 6 | ---------------- 7 | This vimrc aimes to collect some useful plugins for web developers working under UNIX and using PHP, C/C++, Lua, JavaScript, etc. 8 | 9 | This is based on brooky-yen''s vimrc (https://github.com/brooky-yen/vimrc) 10 | I adjust the bundle list for this vimrc to focus on web development, and share with my colleagues. 11 | 12 | I also added the chinese help documentation of VIM 7.2, see by type `:h`. 13 | 14 | Author: hightman 15 | 16 | 17 | Requisites 18 | ---------------- 19 | The distribution is designed to work with Vim >= 7.2. 20 | 21 | The distribution also requires ack, ctags, git, ruby and rake. I recommend using the GUI version of VIM (gvim on Linux and Windows, MacVim on OSX) for some plugin only support GUI version (e.g. Command-T). You can [download MacVim here](https://github.com/b4winckler/macvim/downloads). 22 | 23 | 24 | Useful vim Plugins included 25 | ---------------- 26 | * [vim-autoclose](https://github.com/Townk/vim-autoclose) 27 | * [ack.vim](https://github.com/mileszs/ack.vim) 28 | * [vim-bufexplorer](https://github.com/thisivan/vim-bufexplorer) 29 | * [vim-easytag](https://github.com/xolox/vim-easytags) 30 | * [tagbar](https://github.com/majutsushi/tagbar) 31 | * [tagbar-phpctags](https://github.com/techlivezheng/tagbar-phpctags) 32 | * [nerdtree](https://github.com/scrooloose/nerdtree) 33 | * [nerdcommenter.git](https://github.com/scrooloose/nerdcommenter.git) 34 | * [YankRing.vim.git](https://github.com/vim-scripts/YankRing.vim.git) 35 | * [vim-fugitive](https://github.com/tpope/vim-fugitive) 36 | * [vim-repeat](https://github.com/tpope/vim-repeat) 37 | * [vim-surround](https://github.com/tpope/vim-surround) 38 | * [vim-eunuch](https://github.com/tpope/vim-eunuch) 39 | * [vim-markdown](https://github.com/tpope/vim-markdown) 40 | * [vim-endwise](https://github.com/tpope/vim-endwise) 41 | * [xmledit.git](https://github.com/sukima/xmledit.git) 42 | * [matchit.zip](https://github.com/vim-scripts/matchit.zip) 43 | * [vim-easymotion](https://github.com/Lokaltog/vim-easymotion) 44 | * [neocomplcache](https://github.com/Shougo/neocomplcache) 45 | * [neosnippet](https://github.com/Shougo/neosnippet) 46 | * [OmniCppComplete](https://github.com/vim-scripts/OmniCppComplete) 47 | * [syntastic](https://github.com/scrooloose/syntastic) 48 | * [vim-php-cs-fixer](https://github.com/stephpy/vim-php-cs-fixer) 49 | * [vim-php-namespace](https://github.com/arnaud-lb/vim-php-namespace) 50 | * [phpcomplete.vim](https://github.com/shawncplus/phpcomplete.vim) 51 | * [php.vim](https://github.com/shawncplus/php.vim) 52 | * [PDV--phpDocumentor-for-Vim](https://github.com/vim-scripts/PDV--phpDocumentor-for-Vim) 53 | * ~[vim-html5-fix](https://github.com/concise/vim-html5-fix)~ 54 | * [vim-haml](https://github.com/tpope/vim-haml) 55 | * [vim-javascript](https://github.com/pangloss/vim-javascript) 56 | * [vim-jquery](https://github.com/itspriddle/vim-jquery) 57 | * [php-search-doc](https://github.com/erikfercak/php-search-doc) 58 | * ~[vim-jquery-doc](https://github.com/lucapette/vim-jquery-doc)~ 59 | * [ctrlp.vim](https://github.com/kien/ctrlp.vim) 60 | 61 | 62 | INSTALL 63 | ------- 64 | 65 | 1. clone this vimrc 66 | ``` 67 | git clone https://github.com/hightman/vimrc.git 68 | ``` 69 | 70 | 2. Run the install script 71 | ``` 72 | sh vimrc/install.sh 73 | ``` 74 | 75 | > Notice: This step may cost much longer time for configuring & install bundles. 76 | 77 | 3. Finished! Enjoy it :-) 78 | 79 | 80 | Conventions 81 | ------------ 82 | 83 | * Backup enabled, the BAK file is saved as `~/.vim/bak/$NAME~` 84 | 85 | * Swap file is moved to `~/.vim/tmp/$NAME.swp` 86 | 87 | * Shourtcuts, the `` key is `;` 88 | - `;w` Save & quit 89 | - `;q` Force to quit without saving 90 | - `;r` Replace the current word in all opened files 91 | - `;er` Open the error console 92 | - `;p` Toggles pastle mode with normal mode 93 | - `;g` Include guard for C source/header file 94 | - `;s` Clear search highlighting 95 | - `;b` Open the BufExplorer in current window 96 | - `+` `-` Quickly adjust size of current splitted window 97 | - `Shift-W` Loop to switch splitted window 98 | - `Ctrl-J Ctrl-K` Move to below/above splitted window and maxmize it 99 | - `Ctrl-H Ctrl-L` Move to left/right splitted window and maxmize it under normal mode 100 | - Double press `Ctrl-T` to open new tab 101 | - `Ctrl-T` + `Ctrl-W` to open the current tab 102 | - `:cd.` Change the working directory to that of the current file 103 | - `Ctrl-[` `Ctrl-]` `Ctrl-\` Jump/Back out of the tag stack 104 | - `F7` `;t` Toggle Tagbar 105 | - `F3` `;n` Toggle NerdTree Tabs 106 | - `F6` `;sy` Manually Syntax check by syntastic plugin 107 | - `F2` `;y` Open yanking history 108 | - `;pm` `;pf` `;jm` Open online PHP_Manual, PHP_Function, JQuery_Manual 109 | - `Ctrl-P` `;f` Invoke CtrlP to find files 110 | - `;ut` `;ht` Update/Highlight tags by vim-easytags 111 | 112 | 113 | -------------------------------------------------------------------------------- /colors/evening.vim: -------------------------------------------------------------------------------- 1 | " Vim color file 2 | " Maintainer: Bram Moolenaar 3 | " Last Change: 2006 Apr 14 4 | 5 | " This color scheme uses a dark grey background. 6 | 7 | " First remove all existing highlighting. 8 | set background=dark 9 | hi clear 10 | if exists("syntax_on") 11 | syntax reset 12 | endif 13 | 14 | let colors_name = "evening" 15 | 16 | hi Normal ctermbg=DarkGrey ctermfg=White guifg=White guibg=grey20 17 | 18 | " Groups used in the 'highlight' and 'guicursor' options default value. 19 | hi ErrorMsg term=standout ctermbg=DarkRed ctermfg=White guibg=Red guifg=White 20 | hi IncSearch term=reverse cterm=reverse gui=reverse 21 | hi ModeMsg term=bold cterm=bold gui=bold 22 | hi StatusLine term=reverse,bold cterm=reverse,bold gui=reverse,bold 23 | hi StatusLineNC term=reverse cterm=reverse gui=reverse 24 | hi VertSplit term=reverse cterm=reverse gui=reverse 25 | hi Visual term=reverse ctermbg=black guibg=grey60 26 | hi VisualNOS term=underline,bold cterm=underline,bold gui=underline,bold 27 | hi DiffText term=reverse cterm=bold ctermbg=Red gui=bold guibg=Red 28 | hi Cursor guibg=Green guifg=Black 29 | hi lCursor guibg=Cyan guifg=Black 30 | hi Directory term=bold ctermfg=LightCyan guifg=Cyan 31 | hi LineNr term=underline ctermfg=Yellow guifg=Yellow 32 | hi MoreMsg term=bold ctermfg=LightGreen gui=bold guifg=SeaGreen 33 | hi NonText term=bold ctermfg=LightBlue gui=bold guifg=LightBlue guibg=grey30 34 | hi Question term=standout ctermfg=LightGreen gui=bold guifg=Green 35 | hi Search term=reverse ctermbg=Yellow ctermfg=Black guibg=Yellow guifg=Black 36 | hi SpecialKey term=bold ctermfg=LightBlue guifg=Cyan 37 | hi Title term=bold ctermfg=LightMagenta gui=bold guifg=Magenta 38 | hi WarningMsg term=standout ctermfg=LightRed guifg=Red 39 | hi WildMenu term=standout ctermbg=Yellow ctermfg=Black guibg=Yellow guifg=Black 40 | hi Folded term=standout ctermbg=LightGrey ctermfg=DarkBlue guibg=LightGrey guifg=DarkBlue 41 | hi FoldColumn term=standout ctermbg=LightGrey ctermfg=DarkBlue guibg=Grey guifg=DarkBlue 42 | hi DiffAdd term=bold ctermbg=DarkBlue guibg=DarkBlue 43 | hi DiffChange term=bold ctermbg=DarkMagenta guibg=DarkMagenta 44 | hi DiffDelete term=bold ctermfg=Blue ctermbg=DarkCyan gui=bold guifg=Blue guibg=DarkCyan 45 | hi CursorColumn term=reverse ctermbg=Black guibg=grey40 46 | hi CursorLine term=underline cterm=underline guibg=grey40 47 | 48 | " Groups for syntax highlighting 49 | hi Constant term=underline ctermfg=Magenta guifg=#ffa0a0 guibg=grey5 50 | hi Special term=bold ctermfg=LightRed guifg=Orange guibg=grey5 51 | if &t_Co > 8 52 | hi Statement term=bold cterm=bold ctermfg=Yellow guifg=#ffff60 gui=bold 53 | endif 54 | hi Ignore ctermfg=DarkGrey guifg=grey20 55 | 56 | " Popupmenu 57 | hi Pmenu guifg=White ctermfg=White guibg=#000099 ctermbg=Blue gui=bold cterm=bold 58 | hi PmenuSel guifg=White ctermfg=White guibg=#5555ff ctermbg=DarkCyan gui=bold cterm=bold 59 | hi PmenuSbar guibg=Grey ctermbg=Grey 60 | hi PmenuThumb guibg=White ctermbg=White 61 | 62 | " vim: sw=2 63 | -------------------------------------------------------------------------------- /colors/moria.vim: -------------------------------------------------------------------------------- 1 | if exists("g:moria_style") 2 | let s:moria_style = g:moria_style 3 | else 4 | let s:moria_style = &background 5 | endif 6 | 7 | execute "command! -nargs=1 Colo let g:moria_style = \"\" | colo moria" 8 | 9 | if s:moria_style == 'dark' 10 | set background=dark 11 | elseif s:moria_style == 'light' 12 | set background=light 13 | else 14 | let s:moria_style = &background 15 | endif 16 | 17 | hi clear 18 | 19 | if exists("syntax_on") 20 | syntax reset 21 | endif 22 | 23 | let colors_name = "moria" 24 | 25 | if s:moria_style == "dark" 26 | hi Normal ctermbg=0 ctermfg=7 guibg=#202020 guifg=#d0d0d0 gui=none 27 | 28 | hi Cursor guibg=#ffa500 guifg=bg gui=none 29 | hi CursorColumn guibg=#444444 gui=none 30 | hi CursorLine guibg=#444444 gui=none 31 | hi DiffAdd guibg=#008b00 guifg=fg gui=none 32 | hi DiffChange guibg=#00008b guifg=fg gui=none 33 | hi DiffDelete guibg=#8b0000 guifg=fg gui=none 34 | hi DiffText guibg=#0000cd guifg=fg gui=bold 35 | hi Directory guibg=bg guifg=#1e90ff gui=none 36 | hi ErrorMsg guibg=#ee2c2c guifg=#ffffff gui=bold 37 | hi FoldColumn ctermbg=bg guibg=bg guifg=#a0b0c0 gui=none 38 | hi Folded guibg=#585858 guifg=#c0d0e0 gui=none 39 | hi IncSearch guibg=#e0cd78 guifg=#000000 gui=none 40 | hi LineNr guifg=#a0b0c0 gui=none 41 | hi ModeMsg guibg=bg guifg=fg gui=bold 42 | hi MoreMsg guibg=bg guifg=#d0d097 gui=bold 43 | hi NonText ctermfg=8 guibg=bg guifg=#a0b0c0 gui=bold 44 | hi Pmenu guibg=#8090a0 guifg=#000000 gui=none 45 | hi PmenuSbar guibg=#607080 guifg=fg gui=none 46 | hi PmenuSel guibg=#e0e000 guifg=#000000 gui=none 47 | hi PmenuThumb guibg=#c0d0e0 guifg=bg gui=none 48 | hi Question guibg=bg guifg=#e0c07e gui=bold 49 | hi Search guibg=#90e090 guifg=#000000 gui=none 50 | hi SignColumn ctermbg=bg guibg=bg guifg=#a0a0a0 gui=none 51 | hi SpecialKey guibg=bg guifg=#e0c07e gui=none 52 | if has("spell") 53 | hi SpellBad guisp=#ee2c2c gui=undercurl 54 | hi SpellCap guisp=#2c2cee gui=undercurl 55 | hi SpellLocal guisp=#2ceeee gui=undercurl 56 | hi SpellRare guisp=#ee2cee gui=undercurl 57 | endif 58 | hi StatusLine ctermbg=7 ctermfg=0 guibg=#485868 guifg=fg gui=bold 59 | hi StatusLineNC ctermbg=8 ctermfg=0 guibg=#304050 guifg=fg gui=none 60 | hi TabLine guibg=#566676 guifg=fg gui=underline 61 | hi TabLineFill guibg=#c0d0e0 guifg=bg gui=none 62 | hi TabLineSel guibg=bg guifg=fg gui=bold 63 | hi Title ctermbg=0 ctermfg=15 guifg=fg gui=bold 64 | hi VertSplit ctermbg=7 ctermfg=0 guibg=#304050 guifg=fg gui=none 65 | if version >= 700 66 | hi Visual ctermbg=7 ctermfg=0 guibg=#607080 gui=none 67 | else 68 | hi Visual ctermbg=7 ctermfg=0 guibg=#607080 guifg=fg gui=none 69 | endif 70 | hi VisualNOS guibg=bg guifg=#90a0b0 gui=bold,underline 71 | hi WarningMsg guibg=bg guifg=#ee2c2c gui=bold 72 | hi WildMenu guibg=#e0e000 guifg=#000000 gui=bold 73 | 74 | hi Comment guibg=bg guifg=#d0d0a0 gui=none 75 | hi Constant guibg=bg guifg=#87df71 gui=none 76 | hi Error guibg=bg guifg=#ee2c2c gui=none 77 | hi Identifier guibg=bg guifg=#7ee0ce gui=none 78 | hi Ignore guibg=bg guifg=bg gui=none 79 | hi lCursor guibg=#00e700 guifg=#000000 gui=none 80 | hi MatchParen guibg=#008b8b gui=none 81 | hi PreProc guibg=bg guifg=#d7a0d7 gui=none 82 | hi Special guibg=bg guifg=#e0c07e gui=none 83 | hi Statement guibg=bg guifg=#7ec0ee gui=none 84 | hi Todo guibg=#e0e000 guifg=#000000 gui=none 85 | hi Type guibg=bg guifg=#f09479 gui=none 86 | hi Underlined guibg=bg guifg=#00a0ff gui=underline 87 | 88 | hi htmlBold ctermbg=0 ctermfg=15 guibg=bg guifg=fg gui=bold 89 | hi htmlItalic ctermbg=0 ctermfg=15 guibg=bg guifg=fg gui=italic 90 | hi htmlUnderline ctermbg=0 ctermfg=15 guibg=bg guifg=fg gui=underline 91 | hi htmlBoldItalic ctermbg=0 ctermfg=15 guibg=bg guifg=fg gui=bold,italic 92 | hi htmlBoldUnderline ctermbg=0 ctermfg=15 guibg=bg guifg=fg gui=bold,underline 93 | hi htmlBoldUnderlineItalic ctermbg=0 ctermfg=15 guibg=bg guifg=fg gui=bold,underline,italic 94 | hi htmlUnderlineItalic ctermbg=0 ctermfg=15 guibg=bg guifg=fg gui=underline,italic 95 | elseif s:moria_style == "light" 96 | hi Normal ctermbg=15 ctermfg=0 guibg=#ffffff guifg=#000000 gui=none 97 | 98 | hi Cursor guibg=#cd4e00 guifg=bg gui=none 99 | hi CursorColumn guibg=#dbdbdb gui=none 100 | hi CursorLine guibg=#dbdbdb gui=none 101 | hi DiffAdd guibg=#008b00 guifg=#ffffff gui=none 102 | hi DiffChange guibg=#00008b guifg=#ffffff gui=none 103 | hi DiffDelete guibg=#8b0000 guifg=#ffffff gui=none 104 | hi DiffText guibg=#0000cd guifg=#ffffff gui=bold 105 | hi Directory guibg=bg guifg=#0000f0 gui=none 106 | hi ErrorMsg guibg=#ee2c2c guifg=#ffffff gui=bold 107 | hi FoldColumn ctermbg=bg guibg=bg guifg=#506070 gui=none 108 | hi Folded guibg=#c8c8c8 guifg=fg gui=none 109 | hi IncSearch guibg=#ffcd78 gui=none 110 | hi LineNr guifg=#506070 gui=none 111 | hi ModeMsg ctermbg=15 ctermfg=0 guibg=bg guifg=fg gui=bold 112 | hi MoreMsg guibg=bg guifg=#1f3f81 gui=bold 113 | hi NonText ctermfg=8 guibg=bg guifg=#506070 gui=bold 114 | hi Pmenu guibg=#8a9aaa guifg=#000000 gui=none 115 | hi PmenuSbar guibg=#708090 guifg=fg gui=none 116 | hi PmenuSel guibg=#ffff00 guifg=#000000 gui=none 117 | hi PmenuThumb guibg=#b0c0d0 guifg=fg gui=none 118 | hi Question guibg=bg guifg=#813f11 gui=bold 119 | hi Search guibg=#a0f0a0 gui=none 120 | hi SignColumn ctermbg=bg guibg=bg guifg=#707070 gui=none 121 | hi SpecialKey guibg=bg guifg=#912f11 gui=none 122 | if has("spell") 123 | hi SpellBad guisp=#ee2c2c gui=undercurl 124 | hi SpellCap guisp=#2c2cee gui=undercurl 125 | hi SpellLocal guisp=#008b8b gui=undercurl 126 | hi SpellRare guisp=#ee2cee gui=undercurl 127 | endif 128 | hi StatusLine ctermbg=0 ctermfg=15 guibg=#a8b8c8 guifg=fg gui=bold 129 | hi StatusLineNC ctermbg=7 ctermfg=0 guibg=#b8c8d8 guifg=fg gui=none 130 | hi TabLine guibg=#b4c4d4 guifg=fg gui=underline 131 | hi TabLineFill guibg=fg guifg=bg gui=none 132 | hi TabLineSel guibg=bg guifg=fg gui=bold 133 | hi Title guifg=fg gui=bold 134 | hi VertSplit ctermbg=7 ctermfg=0 guibg=#b8c8d8 guifg=fg gui=none 135 | if version >= 700 136 | hi Visual ctermbg=7 ctermfg=0 guibg=#c8d8e8 gui=none 137 | else 138 | hi Visual ctermbg=7 ctermfg=0 guibg=#c8d8e8 guifg=fg gui=none 139 | endif 140 | hi VisualNOS guibg=bg guifg=#90a0b0 gui=bold,underline 141 | hi WarningMsg guibg=bg guifg=#ee2c2c gui=bold 142 | hi WildMenu guibg=#ffff00 guifg=fg gui=bold 143 | 144 | hi Comment guibg=bg guifg=#786000 gui=none 145 | hi Constant guibg=bg guifg=#077807 gui=none 146 | hi Error guibg=bg guifg=#ee2c2c gui=none 147 | hi Identifier guibg=bg guifg=#007080 gui=none 148 | hi Ignore guibg=bg guifg=bg gui=none 149 | hi lCursor guibg=#008000 guifg=#ffffff gui=none 150 | hi MatchParen guibg=#00ffff gui=none 151 | hi PreProc guibg=bg guifg=#800090 gui=none 152 | hi Special guibg=bg guifg=#912f11 gui=none 153 | hi Statement guibg=bg guifg=#1f3f81 gui=bold 154 | hi Todo guibg=#ffff00 guifg=fg gui=none 155 | hi Type guibg=bg guifg=#912f11 gui=bold 156 | hi Underlined guibg=bg guifg=#0000cd gui=underline 157 | 158 | hi htmlBold guibg=bg guifg=fg gui=bold 159 | hi htmlItalic guibg=bg guifg=fg gui=italic 160 | hi htmlUnderline guibg=bg guifg=fg gui=underline 161 | hi htmlBoldItalic guibg=bg guifg=fg gui=bold,italic 162 | hi htmlBoldUnderline guibg=bg guifg=fg gui=bold,underline 163 | hi htmlBoldUnderlineItalic guibg=bg guifg=fg gui=bold,underline,italic 164 | hi htmlUnderlineItalic guibg=bg guifg=fg gui=underline,italic 165 | endif 166 | -------------------------------------------------------------------------------- /doc/arabic.cnx: -------------------------------------------------------------------------------- 1 | *arabic.txt* For Vim version 7.2. 最近更新: 2006年2月 2 | 3 | 4 | VIM 参考手册 by Nadim Shaikli 5 | 译者: Willis 6 | http://vimcdoc.sf.net 7 | 8 | 9 | Vim 的阿拉伯语支持 (选项和映射) *Arabic* 10 | 11 | {Vi 没有任何这里的功能} 12 | 13 | *E800* 14 | 为了使用从右到左和阿拉伯语的映射支持,需要编译 VIM 时加入 |+arabic| 特性。 15 | 16 | 这些功能由 Nadim Shaikli 编写。 17 | 18 | 本文件最好在 VIM 的 GUI 版本里用以下设置阅读: > 19 | 20 | :set encoding=utf-8 21 | :set arabicshape 22 | 23 | 24 | 简介 25 | ------------ 26 | 阿拉伯语是一个需要多项特殊特性的要求很高的语言。字符是从右到左导向的,应该在屏 27 | 幕上从右到左的显示。阿拉伯语也要求字型重整: 相同的字符出现在词的不同相对位置 28 | (开头,中间,结尾,或者单独出现) 时有不同的字型。阿拉伯语也要求两种不同的组合 29 | 形式和在一些情况下,把多达两个的字符附加在 (superimpose) 别的字符上的能力 (合 30 | 成) 或者实际把两个字符替代成一个 (组合) 的能力。最后,要正确地显示阿拉伯语,需 31 | 要 ISO-8859-6 (U+0600-U+06FF) 字体和 B-表现型 (U+FE70-U+FEFF) 字体,两者都是 32 | 所谓的 ISO-10646-1 字体的一部分。 33 | 34 | 命令、提示和帮助文件不是用阿拉伯语书写的,以使用户界面保持和标准 Vi 的界面一 35 | 致。 36 | 37 | 38 | 特色 39 | ---------- 40 | o 就像原有的 Vim 一样,编辑从左到右的文件。 41 | 42 | o 和从右到左两种模式下同时察看同一个文件。(这有助于编辑混合两种文字的文件)。 43 | 44 | o 不需要终端对从右到左能力的特别支持。这项改动完全独立于硬件。只需要阿拉伯语 45 | 的字体。 46 | 47 | o 和原有的 Vim 兼容。几乎所有的功能都支持从右到左的模式 (除了一些漏洞以外)。 48 | 49 | o 单个命令就可以改变键盘映射和反向插入模式。 50 | 51 | o 从反向的插入模式退回到文件里正确的位置 (如果可能的话)。 52 | 53 | o 单个命令可以切换完全的阿拉伯语支持。 54 | 55 | o 在阿拉伯语模式,数字的输入是从左到右的。在输入一个非数字的字符时,它会插在 56 | 最后一个数字的左面。 57 | 58 | o 在命令行的反向插入模式里,提供阿拉伯语的映射。 59 | 60 | o 如果 VIM 在一个有双向显示 (Bidi) 能力的终端模拟器中启动,那么可能有一定的双 61 | 向显示能力。 62 | 63 | 64 | 阿拉伯语字体 *arabicfonts* 65 | ------------ 66 | 67 | VIM 要求等宽字体,这已经有很多了。阿拉伯语要求有 ISO-8859-6 和 B-表现型 68 | (Presentation Form-B) 字体 (没有 B-型,阿拉伯语支持是_不能_用的)。强烈推荐用户 69 | 寻找所谓的 'ISO-10646-1' 字体。在因特网上找找看,或者查看 www.arabeyes.org,了 70 | 解更多关于哪里可以得到所需的阿拉伯字体的信息。 71 | 72 | 73 | 字体安装 74 | ----------------- 75 | 76 | o 在 X Window 系统下 (Unix/Linux) 安装字体 77 | 78 | 根据你的系统,把你的_阿拉伯_字体文件复制到你选择的一个目录下。转到这个目 79 | 录,然后执行如下命令: > 80 | 81 | % mkfontdir 82 | % xset +fp path_name_of_arabic_fonts_directory 83 | 84 | 85 | 使用方法 86 | ----- 87 | 在实际在 VIM 使用阿拉伯语之前,要考虑到并完成一些设置。 88 | 89 | o 设置阿拉伯字体 90 | 91 | + 对于 VIM GUI 而言,把 'guifont' 设成你的_阿拉伯_字体。这是通过在 VIM 窗 92 | 口输入以下命令完成的。> 93 | > 94 | :set guifont=你的_阿拉伯_字体 95 | < 96 | 注意: 字符串 '你的_阿拉伯_字体' 应该用一个完整的 linux/unix 系统下的字体 97 | 名字来代替 (比如, 98 | -misc-fixed-medium-r-normal--20-200-75-75-c-100-iso10646-1)。 99 | 100 | 你可以在 .vimrc 文件里加上 'guifont' 的设置命令以得到相同的结果。换句话 101 | 说,在你的 .vimrc 文件里加上 ':set guifont=你的_阿拉伯_字体'。 102 | 103 | + 在 X Window 环境上,你也可以在启动 VIM 时加上 '-fn 你的_阿拉伯_字体' 选 104 | 项。 105 | 106 | o 设置合适的编码 107 | 要打开正确的阿拉伯语设置,下面的命令: > 108 | > 109 | :set encoding=utf-8 110 | < 111 | 应该加在你的 .vimrc 文件里 (最好不要在 VIM 窗口的命令行里手工输入)。简单的 112 | 说,把 ':set encoding=utf-8' 加到你的 '.vimrc' 文件里。 113 | 114 | 试图在没有 UTF-8 的时候使用阿拉伯语会得到以下的警告消息: > 115 | 116 | *W17* > 117 | Arabic requires UTF-8, do ':set encoding=utf-8' 118 | 119 | o 进入阿拉伯语的设置 [快捷方式] 120 | 121 | 为了把事情简化和流水线化,你可以有两种方案: 或者如下启动 VIM: 122 | > 123 | % vim -A my_utf8_arabic_file ... 124 | < 125 | 或者在 VIM 里执行如下的命令: 126 | > 127 | :set arabic 128 | < 129 | 建议用户采取这两种可能的激活方式。在没有打开 'termbidi' 设置的情况下,两者 130 | 都: 131 | 132 | 1. 设置相应的键盘映射 133 | 2. 允许删除一个单独的组合字符对 134 | 3. 打开从右到左模式 135 | 4. 打开从右到左的命令行模式 (影响命令行) 136 | 5. 打开阿拉伯字型重整模式 (进行字型的替换) 137 | 138 | 你也可以在 .vimrc 文件里这么做,只要增加这一行 ':set arabic' 就行了。 139 | 140 | 你也可以用如下方式关闭阿拉伯语的支持: 141 | > 142 | :set noarabic 143 | < 144 | 它会关闭上条打开命令所做的一切,而不影响全局设置,从而也就不影响别的打开的 145 | 缓冲区。简单地说,'noarabic' 命令: 146 | 147 | 1. 关闭替换了的键盘映射 148 | 2. 关闭删除单独的组合字符对的功能 149 | 3. 关闭从右到左模式 150 | 151 | 注意: 为了支持外部的双向显示 (bidi) ("mlterm" 就是一个例子),'arabic' 命令 152 | 考虑到 'termbidi' 设置。因为双向显示比从右到左更好,提供的功能更多, 153 | 如果这个设置存在,我们优先使用它。这时,'arabic' 只修改键盘映射。 154 | 155 | 从另一方面说, 如果你喜欢详细而具体的操作,你可以不用 'arabic' 的快捷方式命 156 | 令,这里是你需要做的 (换而言之,如果你用 ':set arabic' 就可以不用看了) - 157 | 158 | + 阿拉伯语的键盘映射激活 159 | 160 | 要激活阿拉伯语的键盘映射 (也即,重新映射你的英语/拉丁语系键盘到一个类似 161 | 于标准阿拉伯的键盘),把 'keymap' 命令设置成 "arabic"。这可以由在你的 VIM 162 | 窗口中输入以下命令完成。 163 | > 164 | :set keymap=arabic 165 | < 166 | 你可以把 'keymap' 设置命令加到你的 .vimrc 文件里。也就是说,把 167 | ':set keymap=arabic' 加到你的 .vimrc 文件里。 168 | 169 | 要在你的缺省映射 (英语) 和阿拉伯语的键盘映射间切换,用户最好在插入 (或 170 | 者加入/替换) 模式下按 'CTRL-^'。命令行下会在插入模式后面提示当前映射为阿 171 | 拉伯状态 (例如,-- INSERT Arabic --)。 172 | 173 | + 阿拉伯的组合字符对的删除 174 | 175 | 缺省时,VIM 关闭 'delcombine' 选项。这个选项允许删除 LAM_ALEF (LAA) 组合 176 | 字符里的 ALEF,但还保留那个 LAM (也就是说,把组合字符恢复到原来的两个字 177 | 符的形式 - 这也适用于 harakat 和他们的组合形式)。你可以在你的 VIM 窗口 178 | 下打开这个选项 179 | > 180 | :set delcombine 181 | < 182 | 你可以把 'delcombine' 设置命令加到你的 .vimrc 文件里。也就是说,把 183 | ':set delcombine' 加到你的 .vimrc 文件里。 184 | 185 | + 阿拉伯的从右到左模式 186 | 187 | 缺省时,VIM 以从左到右模式启动。'rightleft' 是改变窗口朝向的命令 - 有如 188 | 下的设置方式, 189 | 190 | - 在从左到右和从右到左模式间切换可以用 ':set rightleft' 和 191 | ':set norightleft'。 192 | 193 | - 在从左到右模式时,在命令行里输入 ':set rl' ('rl' 是 rightleft 的缩写)。 194 | 195 | - 把 ':set rl' 一行放到你的 '.vimrc' 文件里,就可以一劳永逸的以从右到左 196 | 模式启动 Vim。 197 | 198 | + 阿拉伯的从右到左的命令行模式 199 | 200 | 有些命令的编辑可以在从右到左的模式下完成。目前,这只对搜索命令适用。 201 | 202 | 控制这点的是 'rightleftcmd' 选项。缺省的是 "search",也就是说在置位了 203 | 'rightleft' 的窗口里会以从右到左的模式编辑搜索命令。要关闭它, 204 | > 205 | :set rightleftcmd= 206 | < 207 | 要重新打开从右到左方式对搜索命令进行编辑, 208 | > 209 | :set rightleftcmd& 210 | < 211 | + 阿拉伯的字型重整模式 212 | 213 | 要激活阿拉伯语所需的字型替换 (重整、合成、组合),打开 'arabicshape' 命 214 | 令。这可以通过在我们的 VIM 窗口下执行 215 | > 216 | :set arabicshape 217 | < 218 | 你可以把 'arabicshape' 设置命令加到你的 .vimrc 文件里。也就是说,把 219 | ':set arabicshape' 加到你的 .vimrc 文件里。 220 | 221 | 键盘映射/键盘 *arabickeymap* 222 | --------------- 223 | 224 | VIM 的字符/字母编码是标准的 UTF-8。我不希望你用任何别的编码形式。 225 | 226 | 注意: UTF-8 是一个包罗万象的编码,因此也是阿拉伯语唯一支持 (和鼓励使用) 的 227 | (不鼓励、反对用任何别的私有编码)。 228 | 229 | o 键盘 230 | 231 | + 插入/替换模式下的 CTRL-^ 切换阿拉伯/拉丁语系模式。 232 | 233 | + 键盘映射基于 Microsoft 的键盘映射表 (阿拉伯世界的实际标准): 234 | 235 | +---------------------------------------------------------------------+ 236 | |! |@ |# |$ |% |^ |& |* |( |) |_ |+ || |~ ّ | 237 | |1 ١ |2 ٢ |3 ٣ |4 ٤ |5 ٥ |6 ٦ |7 ٧ |8 ٨ |9 ٩ |0 ٠ |- |= |\ |` ذ | 238 | +---------------------------------------------------------------------+ 239 | |Q َ |W ً |E ُ |R ٌ |T لإ |Y إ |U ` |I ÷ |O x |P ؛ |{ < |} > | 240 | |q ض |w ص |e ث |r ق |t ف |y غ |u ع |i ه |o خ |p ح |[ ج |] د | 241 | +-----------------------------------------------------------+ 242 | |A ِ |S ٍ |D [ |F ] |G لأ |H أ |J ـ |K ، |L / |: |" | 243 | |a ش |s س |d ي |f ب |g ل |h ا |j ت |k ن |l م |; ك |' ط | 244 | +------------------------------------------------------+ 245 | |Z ~ |X ْ |C { |V } |B لآ |N آ |M ' |< , |> . |? ؟ | 246 | |z ئ |x ء |c ؤ |v ر |b لا |n ى |m ة |, و |. ز |/ ظ | 247 | +-------------------------------------------------+ 248 | 249 | 限制 250 | ------------ 251 | 252 | o VIM 的 GUI 形式目前不支持双向显示 (也就是,能在一行里同时看到阿拉伯语和拉丁 253 | 语系的混合文字)。 254 | 255 | 256 | 已知漏洞 257 | ---------- 258 | 259 | 有一个已知的小漏洞: 260 | 261 | 1. 如果你在一个 LAM (U+0644) 之后插入一个 haraka (例如,Fatha (U+064E)),然后 262 | 再插入一个 ALEF (U+0627),期望的组合不会发生,因为夹在中间的 haraka 产生了 263 | 一些_不_会正确显示的东西。 264 | 265 | 临时解决方法: 不要在 LAM 和 ALEF 组合之间插入 harakat。基本上,不要期望看 266 | 到 harakat 和 LAM+ALEF 组合的字符的正确显示 (即使是它们之后 267 | 的字符也有问题)。这个问题纯粹是显示上的,在文件里存储的内容 268 | 包含所有的信息/编码,无一遗漏。 269 | 270 | 现在还不知道别的漏洞。 271 | 272 | vim:tw=78:ts=8:ft=help:norl: 273 | 274 | -------------------------------------------------------------------------------- /doc/bufexplorer.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hightman/vimrc/38408af1e18c11b386409f2c6d21b5e3c55bfaa1/doc/bufexplorer.txt -------------------------------------------------------------------------------- /doc/debug.cnx: -------------------------------------------------------------------------------- 1 | *debug.txt* For Vim version 7.2. 最近更新: 2006年5月 2 | 3 | 4 | VIM 参考手册 by Bram Moolenaar 5 | 译者: Willis 6 | http://vimcdoc.sf.net 7 | 8 | 9 | 调试 Vim *debug-vim* 10 | 11 | 本文档是为了调试 Vim 自身而准备的,如果 Vim 不能正确工作,请看这里。 12 | 如果要调试 Vim 脚本和函数等,见 |debug-scripts|。 13 | 14 | 1. 用 gcc 和 gdb 定位崩溃 |debug-gcc| 15 | 2. Windows 漏洞报告 |debug-win32| 16 | 17 | ============================================================================== 18 | 19 | 1. 用 gcc 和 gdb 定位崩溃 *debug-gcc* 20 | 21 | 如果 Vim 崩溃于某测试文件而使用的编译器是 gcc 的话,下面给出具体步骤,你可以用 22 | 它来发现 Vim 崩溃的准确位置。MingW 工具同样适用。 23 | 24 | 1. 用 "-g" 选项编译 Vim (Makefile 有一行用于此目的,可去掉它的注释)。 25 | 26 | 2. 执行命令 (把 "11" 换成实际失败的那个测试): > 27 | cd testdir 28 | gdb ../vim 29 | run -u unix.vim -U NONE -s dotest.in test11.in 30 | 31 | 3. 检查 Vim 在哪里崩溃,gdb 会给出这方面的消息。 32 | 33 | 4. 此 gdb 命令可以得到堆栈记录: > 34 | where 35 | < 此命令可以查看不同的堆栈记录位置: > 36 | frame 3 37 | < 把 "3" 换成堆栈记录其中一个位置。 38 | 39 | ============================================================================== 40 | 41 | 2. Windows 漏洞报告 *debug-win32* 42 | 43 | 如果 Vim 的 Windows 版本崩溃且崩溃可以重现,通过采取若干步骤,你可以提供有用的 44 | 漏洞报告。 45 | 46 | 47 | 2.1 通用 ~ 48 | 49 | 首先,你需要可执行文件的调试器符号文件 (PDB): gvim.pdb 对应 gvim.exe,vim.pdb 50 | 对应 vim.exe。在获得可执行文件的相同位置应该可以下载 PDB。确信使用和 EXE 匹配 51 | 的 PDB 文件 (日期相同)。 52 | 53 | 如果你自己用 Microsoft Visual C++ 编译器编译可执行文件,PDB 应该和 EXE 在同一 54 | 个生成目录。 55 | 56 | 另一个方案是,如果有源代码,在 Visual Studio 里你可以导入 Make_ivc.mak 以构造 57 | 一个工作区 (workspace)。然后选择调试配置 (debug configuration),构造并进行各种 58 | 类型的调试 (设置断点,观察 (watch) 变量等)。 59 | 60 | 如果你有 Visual Studio,用它来代替 VC Toolkit 和 WinDbg。 61 | 62 | 如果是使用其它编译器,你应该用相应的调试器: Borland 编译器编译的 Vim 可执行文 63 | 件使用 TD;Cygwin 和 MinGW 编译器使用 gdb (见上 |debug-gcc|)。 64 | 65 | 66 | *debug-vs2005* 67 | 2.2 用 Visual Studio 2005/Visual C++ 2005 Express 调试 Vim 的崩溃 ~ 68 | 69 | 首先启动 vim.exe 或 gvim.exe,然后启动 Visual Studio。(如果你没有 Visual 70 | Studio,按照 |get-ms-debuggers| 的指示获取免费版本 Visual C++ 2005 Express 71 | Edition。) 72 | 73 | 在 Tools 菜单上点击 Attach to Process (连接到进程)。选择 Vim 的进程。 74 | 75 | 在 Vim 里,重现崩溃。Visual Studio 这时会给出对话框,告诉你 Vim 进程出现了未处 76 | 理的例外。点击 Break,中断该进程并进入调试。 77 | 78 | Visual Studio 这时弹出另一个对话框,告诉你无法载入符号文件所以不能显示源代码。 79 | 点击 OK。 80 | 81 | 这时会打开若干窗口。在 Call Stack (调用栈) 窗口按鼠标右键。然后选择 Load 82 | Symbols (载入符号)。Find Symbols (寻找符号) 对话框会打开以寻找 (g)vim.pdb。导 83 | 航到你准备好的包含 PDB 文件的目录,然后选择 Open。 84 | 85 | 此时,你应该有了完整的调用栈,其中包含了 vim 的函数名和行号。双击任何一行会给 86 | 出 Find Source (寻找源代码) 对话框。导航到包含 Vim 源代码的目录 (如果有的话)。 87 | 88 | 如果你不知道如何继续调试,按照 ":help bug-reports" 的步骤进行。把调用栈粘贴到 89 | 漏洞报告里。 90 | 91 | 如果有 Visual Studio 的付费版本,你可以用 Debug 菜单保存一个 minidump 并在漏洞 92 | 报告里一并发送。minidump 是一个小文件 (<100KB),里面包含进程的状态信息。 93 | Visual C++ 2005 Express Edition 不能保存 minidump 也不能安装成为 just-in-time 94 | (即时) 调试器。如果你需要保存 minidump 或者需要即时 (或 postmortem,事后) 调试 95 | 器的话,使用 WinDbg,|debug-windbg|。 96 | 97 | *debug-windbg* 98 | 2.3 用 WinDbg 调试 Vim 的崩溃 ~ 99 | 100 | |get-ms-debuggers| 说明如何得到 WinDbg。 101 | 102 | 和 Visual Studio IDE 一样,你可以连接 WinDbg 到运行中的 Vim 进程。你也可以让系 103 | 统自动激活 WinDbg,从而使之成为事后调试器。要设置 WinDbg 成为一个事后调试器, 104 | 运行 "windbg -I"。 105 | 106 | 要连接 WinDbg 到运行中的 Vim 进程,启动 WinDbg,在 File 菜单上点击 Attach to 107 | Process (连接到进程)。选择 Vim 进程然后点击 OK。 108 | 109 | 这个时候,选择 File 菜单的 Symbol File Path (符号文件路径),然后把包含 Vim PDB 110 | 文件的目录加入 sympath。如果你有 Vim 源代码,使用 File 菜单的 Source File Path 111 | (源文件路径)。WinDbg 里可以打开源文件,如果你愿意,也可以设置断点。现在重现崩 112 | 溃。WinDbg 应该会打开源文件并定位于崩溃所在的位置。使用 View 菜单,你可以检查 113 | 调用栈、局部变量、观察窗口 (watch window) 和其它。 114 | 115 | 如果把 WinDbg 用作事后调试器,你不需要把 WinDbg 连接到 Vim 进程上。只要简单地 116 | 重现崩溃,WinDbg 就会自动启动。用上面相同的方法设置符号文件路径和源文件路径。 117 | 118 | 要保存 minidump,在 WinDbg 命令行上输入: > 119 | .dump vim.dmp 120 | < 121 | *debug-minidump* 122 | 2.4 打开 Minidump ~ 123 | 124 | 如果你有 minidump 文件,你可以用 Visual Studio 或 WinDbg 打开它。 125 | 126 | Visual Studio 2005 里: File 菜单上选择 Open,然后 Project/Solution。导航到该 127 | .dmp 文件然后将它打开。现在按 F5 打开调试器。按照 |debug-vs2005| 的指示来设置 128 | 符号文件路径。 129 | 130 | WinDbg 里: 选择 File 菜单的 Open Crash Dump,按照 |debug-windbg| 的指示来设置 131 | 符号文件路径。 132 | 133 | *get-ms-debuggers* 134 | 2.5 获得 Microsoft 调试工具 ~ 135 | 136 | Debugging Tools for Windows (Windows 调试工具) 可以在这里下载 137 | http://www.microsoft.com/whdc/devtools/debugging/default.mspx 138 | 它包括 WinDbg 调试器。 139 | 140 | Visual C++ 2005 Express Edition 可以在这里免费下载: 141 | http://msdn.microsoft.com/vstudio/express/visualC/default.aspx 142 | 143 | ========================================================================= 144 | vim:tw=78:ts=8:ft=help:norl: 145 | -------------------------------------------------------------------------------- /doc/debugger.cnx: -------------------------------------------------------------------------------- 1 | *debugger.txt* For Vim version 7.2. 最近更新: 2006年7月 2 | 3 | 4 | Vim 参考手册 作者:Gordon Prieur 5 | 译者: iCrazy http://vimcdoc.sf.net 6 | 7 | 8 | 支持调试器的特性 *debugger-support* 9 | 10 | 1. 调试器的特性 |debugger-features| 11 | 2. Vim 编译选项 |debugger-compilation| 12 | 3. 整合的调试器 |debugger-integration| 13 | 14 | {Vi 没有以上的功能} 15 | 16 | ============================================================================== 17 | 1. 调试器的特性 *debugger-features* 18 | 19 | 以下的功能可以和调试器、集成编程环境 (IPE) 或集成开发环境 (IDE) 集成使用: 20 | 21 | 替代命令输入 |alt-input| 22 | 调试标号 |debug-signs| 23 | 调试源代码高亮 |debug-highlight| 24 | 信息页脚 |gui-footer| 25 | 气泡表达式求值 |balloon-eval| 26 | 27 | 这些特性主要是针对图形界面的 gvim 而新增的。然而,|alt-input| 和 28 | |debug-highlight| 是同时针对 vim 和 gvim 进行开发的。一些其他的功能略做修改, 29 | 即可在非 GUI 的 vim 上使用。但是,我没有这样做,我也没有测试过针对非图形 GUI 30 | 界面编译出的 vim 的可靠性。 31 | 32 | 33 | 1.1 替代命令输入 *alt-input* 34 | 35 | 要使 Vim 和一个调试器一起工作,至少必须有一种和调试器进行输入连接的方式,或者 36 | 有一个外部工具。尽管很多情况下,也同时会有一个输出连接,但这并不是必要的。 37 | 38 | 输入连接的目的是让外部调试器把命令传送给 Vim。调试器送来的命令必须足以使它自己 39 | 显示当前的调试环境和状态。 40 | 41 | 目前的实现是基于 X 工具包中的 dispatch 循环和对 XtAddInput() 函数的调用的。 42 | 43 | 44 | 1.2 调试标号 *debug-signs* 45 | 46 | 很多调试器用在一些行前面加一个小记号或使这些行颜色高亮的方式来给它们做标记。命 47 | 令 |:sign| 可以使得调试器设定这种图形标号。这项特性有什么作用呢?举例来说,它 48 | 可以用来使调试器显示一个箭头,从而指示正在被调试的程序的程序计数器 (PC)。另一 49 | 个用处是在有断点的行后面显示一个小的停止标号。这些可见的标号可以使用户得知一些 50 | 调试器的状态信息。 51 | 52 | 这些特性不仅仅可以和调试器一起使用。它们可以使一个 IPE 高亮显示编译错误、查找 53 | 到的文本等等。标号功能还可以和 |debug-highlight| 一起工作,从而保证标号可以被 54 | 显眼的显示出来。 55 | 56 | 调试标号可以用命令 |:sign| 来定义和设置。 57 | 58 | 59 | 1.3 调试源代码高亮 *debug-highlight* 60 | 61 | 这项特性可以使得您把一行文字突出地高亮。这种高亮是用来使某一行突出显示的。高亮 62 | 功能在 vim 和 gvim 中都可以工作,而调试标号一般仅在 gvim 下工作。Sun 63 | Microsystem 的 dtterm 是一个例外,它有一个 "sign gutter" 可以用来显示标号。 64 | 65 | 66 | 1.4 信息页脚 *gui-footer* 67 | 68 | 信息页脚可以用来显示调试器或 IPE 中传来的信息。它还可以用来显示菜单和工具栏提 69 | 示。页脚区域位于 GUI 窗口的底部,在用来显示冒号 (:) 命令的那一行的下方。 70 | 71 | 页脚的显示是用 'guioptions' 中的字母 'F' 来控制的。 72 | 73 | 74 | 1.5 气泡表达式求值 *balloon-eval* 75 | 76 | 这项特性可以使一个调试器或其他的外部工具根据鼠标所指的位置显示动态的信息。它的 77 | 目的在于使 Sun 的 Visual WorkShop 调试器能够显示表达式表达式求值。实际上,这个 78 | 特性是用通用的方式实现的,所以它还可以用来显示其他的信息。 79 | 80 | 气泡表达式求值还有一些可以设置的参数。对于 Motif,字体列表和颜色可以通过 X 81 | 资源 (XmNballoonEvalFontList, XmNballoonEvalBackground, 和 82 | XmNballoonEvalForeground) 来设定。 83 | 84 | 选项 'balloondelay' 用来设定显示气泡之前的延迟时间。 85 | 选项 'ballooneval' 必须打开。 86 | 87 | 气泡表达式求值仅当用 |+balloon_eval| 特性编译时有效。 88 | 89 | 气泡表达式求值功能还被用来为工具栏显示提示。对于这个用途,无须设置选项 90 | 'ballooneval',但是其他选项的值将被应用。 91 | 92 | 另一种使用气泡表达式的方法是使用 'balloonexpr' 选项。完全由用户定义。 93 | 94 | ============================================================================== 95 | 2. Vim 编译选项 *debugger-compilation* 96 | 97 | 调试器特性是为了和 Sun 的 Visual WorkShop 集成编程环境 (ipe) 一起使用而开发 98 | 的。事实上,它们使用了一种通用的方式,所以其他的调试器也可以使用一部分,甚至是 99 | 所有的那些原本被 Sun 的 ipe 所使用的工具。 100 | 101 | 以下的编译时的预处理程序变量控制着这些特性: 102 | 103 | 交替命令输入 ALT_X_INPUT 104 | 调试符号 FEAT_SIGNS 105 | 调试高亮 FEAT_SIGNS 106 | 信息页脚 FEAT_FOOTER 107 | 气泡表达式求值 FEAT_BEVAL 108 | 109 | 最先提供且带有完整 IPE/IDE 的整合来自 Sun Visual WorkShop。如果需要编译一个带 110 | 有 VWS 接口的 gvim,请设置下面这个标志位,它会设置以上所有的标志位: 111 | 112 | Sun Visual WorkShop FEAT_SUN_WORKSHOP 113 | 114 | ============================================================================== 115 | 3. 整合的调试器 *debugger-integration* 116 | 117 | 一个完全整合的 调试器/IPE/IDE 是 Sun 的 Visual WorkShop 集成编程环境。 118 | 119 | 对 Sun NetBeans 的支持,可见 |netbeans|。 120 | 121 | vim:tw=78:sw=4:ts=8:ft=help:norl: 122 | -------------------------------------------------------------------------------- /doc/farsi.cnx: -------------------------------------------------------------------------------- 1 | *farsi.txt* For Vim version 7.2. 最近更新: 2006年8月 2 | 3 | 4 | VIM 参考手册 作者: Mortaza Ghassab Shiran 5 | 译者: Willis 6 | http://vimcdoc.sf.net 7 | 8 | 9 | 从右到左的显示和 Vim 的波斯语映射 *farsi* *Farsi* 10 | 11 | {Vi 没有任何这里的功能} 12 | 13 | *E27* 14 | 要使用从由右到左和波斯语的映射支持,要在编译 Vim 时加入 |+farsi| 特性。 15 | 16 | 这些功能是 Mortaza G. Shiran 开发的。 17 | 18 | 19 | 简介 20 | ------------ 21 | 从右到左的文件要求显示的时候从右到左。在书写波斯语的文档、传真或备忘录的时候, 22 | 这类型的文件很有用。 23 | 24 | 命令、提示和帮助文件不是用波斯语书写的,所以用户界面保持和标准 Vi 的界面一致。 25 | 26 | 27 | 特色 28 | ---------- 29 | o 就像原有的 Vim 一样,编辑从左到右的文件。 30 | 31 | o 和从右到左两种模式下同时察看同一个文件。(这有助于编辑混合两种文字的文件)。 32 | 33 | o 和原有的 Vim 兼容。几乎所有的功能都支持从右到左的模式 (参看下面的漏洞)。 34 | 35 | o 单个命令就可以改变键盘映射和反向插入模式。 36 | 37 | o 从反向的插入模式退回到文件里正确的位置 (如果可能的话)。 38 | 39 | o 在波斯语模式,数字的输入是从左到右的。在输入一个非数字的字符时,它会插在最 40 | 后一个数字的左面。 41 | 42 | o 不需要终端对从右到左能力的特别支持。这项改动完全独立于硬件。 43 | 44 | o 在命令行的反向插入模式里,提供波斯语的映射。 45 | 46 | o 通过 F8 键,切换从左到右和从右到左的模式。 47 | 48 | o 通过 F9 键,切换波斯语 ISIR-3342 标准编码和 Vim 波斯编码。因为这只对从右到 49 | 左的文本有意义,所以也只有从右到左模式支持这项功能。 50 | 51 | 波斯字体 *farsi fonts* 52 | ----------- 53 | 54 | 如果解压 "extra" 压缩档,在 "$VIM/farsi" 子目录下可以找到以下文件: 55 | 56 | + far-a01.pcf Unix 包括 Linux 的 X Windows 字体 57 | + far-a01.bf SunOS 用的 X Windows 字体 58 | + far-a01.f16 Unix 包括 Linux 系统用的屏幕字体 59 | + far-a01.fon Windows NT/95/98 用的等宽字体 60 | + far-a01.com DOS 用的屏幕字体 61 | 62 | 63 | 字体安装 64 | ----------------- 65 | 66 | o MS Window 系统 (NT/95/98) 的字体安装 67 | 68 | 从 '控制面板' 文件夹中打开 '字体' 程序。然后从 '文件' 菜单里选择 69 | '安装新字体...'。找到 'far-a01.fon' 并选中,然后按照安装指导操作。 70 | 注意: 有些人报告说这样做不成功。对此,我们现在没有解决方法。 71 | 72 | o X Windows 系统 (Unix/Linux) 的字体安装 73 | 74 | 根据你的系统,把 far-a01.pcf.Z 或者 far-a01.pcf.gz 复制到你选择的一个目录。 75 | 进入这个包含波斯字体的目录,然后执行以下命令: > 76 | 77 | > mkfontdir 78 | > xset +fp path_name_of_farsi_fonts_directory 79 | 80 | o X Windows 系统 (SunOS) 的字体安装 81 | 82 | 把 far-a01.bf 字体复制到你选择的一个目录。进入这个包含 far-a01.fb 字体的目 83 | 录,然后执行以下命令: > 84 | 85 | > fldfamily 86 | > xset +fp path_name_of_fonts_directory 87 | 88 | o 安装 ASCII 屏幕字体 (Unix/Linux) 89 | 90 | Linux 系统下,把 far-a01.f16 字体复制到 /usr/lib/kbd/consolefonts 目录然后 91 | 执行 setfont 程序 "setfont far-a01.f16"。对其他系统 (比如 SCO Unix),请参考 92 | 你系统的管理手册的字体安装章节。 93 | 94 | o 安装 ASCII 屏幕字体 (DOS) 95 | 96 | 系统启动后,在第一次使用 Vim 之前,用 far-a01.com 字体上传程序来上传波斯字 97 | 体。 98 | 99 | 100 | 使用方法 101 | ----- 102 | 在启动 Vim 之前,应该先设置能够让 Vim 运行在波斯模式的环境。除了设置波斯字体以 103 | 外,以下还有应该设置的一些系统环境: 键盘码映射,将图形卡转入 ASCII 屏幕模式, 104 | 把 IO 驱动设成 8 位 clean 模式,等等。 105 | 106 | o 设置波斯字体 107 | 108 | + Vim GUI 上把 'guifont' 设成 far-a01。这可以通过在 Vim 窗口下输入 109 | ':set guifont=far-a01' 来完成。 110 | 111 | 把这行加入你的 .vimrc 文件 (在 NT/95/98 平台下用 _vimrc),你就可以在 Vim 112 | 启动时完成这项设置。 113 | 114 | 在 X Window 环境下,你也可以在启动 Vim 时加入 "-fn far-a01" 选项。 115 | 116 | + 对于执行在 xterm 下面的 Vim,用波斯字体打开一个 xterm (例如, kterm -fn 117 | far-a01), 然后在 kterm 里面启动 Vim。 118 | 119 | + 执行在 DOS 上的 Vim,在第一次执行 Vim 之间,执行 far-a01.com 字体上传程 120 | 序可以上传波斯字体。 121 | 122 | o 激活波斯语键盘映射 123 | 124 | 要激活波斯语的键盘映射,可以置位 'altkeymap' 或者 'fkmap'。这可以通过在 Vim 125 | 窗口下输入 'set alm' 或者 'set fk' 来完成。把这些行加入你的 .vimrc 文件 (在 126 | NT/95/98 平台下用 _vimrc),你就可以在 Vim 启动时完成这些设置。 127 | 128 | 要使用缺省的第二语言,你可以通过键入 ':set noakm' 复位 'altkeyamap',从而关 129 | 闭波斯语的键盘映射。 130 | 131 | o 从右到左的波斯语模式 132 | 133 | 缺省的 Vim 以左到右的模式启动。以下是若干改变窗口朝向的途径: 134 | 135 | + 启动 Vim 时加入参数 -F (例如. vim -F ... )。 136 | 137 | + 用 F8 键切换从左到右和从右到左的模式。 138 | 139 | + 在从左到右的模式时,在命令行上键入 'set rl' ('rl' 是从右到左的英文缩写)。 140 | 141 | + 在你的 '.vimrc' 文件里放上 'set rl',就可以一劳永逸地确保以从右到左的模式 142 | 启动 Vim。 143 | 144 | 编码 145 | -------- 146 | 147 | 这里使用的字母编码是 Vim 扩展 ISIR-3342 标准,还提供了一个内置函数,用于 Vim 148 | 扩展 ISIR-3342 和标准的 ISIR-3342 标准之间的转换。 149 | 150 | 为了文档兼容,在不同的平台上 (例如 UNIX,NT/95/98,MS DOS 等等) 的字母编码保持 151 | 一致。 152 | 153 | 154 | o 键盘设置 155 | 156 | + CTRL-_ 插入/替换模式下,切换波斯 (akm) 和拉丁语系模式。 157 | 158 | + CTRL-_ 在编辑模式下,把光标移到输入文本的末尾。 159 | 160 | + CTRL-_ 在命令行模式下,切换波斯 (akm) 和拉丁语系模式。这时,波斯文本就可 161 | 以在反向插入方式下输入。 162 | 163 | + F8 - 切换从右到左和从左到右的模式。 164 | 165 | + F9 - 切换 ISIR-3342 编码和 Vim 扩展 ISIR-3342 编码 (只有在从右到左的模式 166 | 下才支持)。 167 | 168 | + 键盘映射基于伊朗 ISIRI-2901 标准。 169 | 以下的对应表显示了波斯 (akm) 模式下的键盘对应: 170 | 171 | ------------------------------------- 172 | ` 1 2 3 4 5 6 7 8 9 0 - = 173 | ¢ ± ² ³ ´ µ ¶ · ¸ ¹ ° ­ ½ 174 | ------------------------------------- 175 | ~ ! @ # $ % ^ & * ( ) _ + 176 | ~ £ § ® ¤ ¥ ª ¬ è ¨ © é « 177 | ------------------------------------- 178 | q w e r t z u i o p [ ] 179 | Ó Ò Æ Ù Ø Õ Ö à Ê É Ç ˆ 180 | ------------------------------------- 181 | Q W E R T Z U I O P { } 182 | ÷ õ ô ó ò ý ð ö [ ] { } 183 | ------------------------------------- 184 | a s d f g h j k l ; ' \ 185 | Ñ Ð á Ã Ü Á Å Þ Ý Ú Û ë 186 | ------------------------------------- 187 | A S D F G H J K L : " | 188 | ù û  þ ú ø À ü æ ç º » ê 189 | ------------------------------------- 190 | < y x c v b n m , . / 191 | ¾ × Ô Î Í Ì Ë Ä ß ¦ ¯ 192 | ------------------------------------- 193 | > Y X C V B N M < > ? 194 | ¼ ñ Ô Ï Í ¡ Ë Â ¾ ¼ ¿ 195 | ------------------------------------- 196 | 197 | 198 | 注意: 199 | ¡ 代表波斯 PSP (不以空白分离) 200 | 201 | ¢ 代表波斯 PCN (用于 HAMZE 属性) 202 | 203 | 限制 204 | ------------ 205 | 206 | o 插入/替换模式 (波斯模式) 下不支持 CTRL-B。 207 | 208 | o 如果你切换拉丁/波斯的键盘对应,重复缓冲区会被清空。也就是说,只有在同一模式 209 | 下你才可以应用重复命令 ('.')。 210 | 211 | o 在波斯模式下输入数字时,重复缓冲区也会被清空。也就是说,输入数字以后你不能 212 | 重复上一次的改变。 213 | 214 | o 从左到右的波斯模式下不支持 CTRL-R。 215 | 216 | o 从右到左的模式下,拉丁语系的模式搜索不会成功,除非你反过来输。 217 | 218 | o 在命令模式下,不支持从左到右方式的数字输入,也因为要支持最大限度的灵活性, 219 | 键盘映射的逻辑也只能受到限制。 220 | 221 | o 在 X Window 环境上,如果你想要在 xterm 终端模拟和波斯模式下运行 Vim,你一定 222 | 要有 ANSI 兼容的终端环境,这是因为在标准的 xterm 终端模拟环境里,超过十进制 223 | 128 的字母有特定的含义。 224 | 225 | 注意: 在 X Window 环境上,Vim GUI 对波斯模式的支持没有这样的限制。所以其实 226 | 没有必要用 xterm 终端模拟来运行。 227 | 228 | 229 | 漏洞 230 | ---- 231 | 在插入/替换模式下如果打开波斯模式,如果你不断的改变光标位置 (通过光标移动),然 232 | 后输入新的文本,再试图撤销最近的更新,撤销操作会出现一个改变的延迟。不过如果你 233 | 继续撤销下去,最终还是能回到原始的文本状态。你也可以用 U 来撤销当前行里的所有 234 | 改变。 235 | 236 | 关于这个漏洞的更多信息可以在 rileft.txt 里查到。 237 | 238 | vim:tw=78:ts=8:ft=help:norl: 239 | -------------------------------------------------------------------------------- /doc/gui_w16.cnx: -------------------------------------------------------------------------------- 1 | *gui_w16.txt* For Vim version 7.2. 最后更新: 2006年7月10日 2 | 3 | 4 | VIM 参 考 手 册 作者:Bram Moolenaar 5 | 译者: Dasn 6 | http://vimcdoc.sf.net 7 | 8 | 9 | Vim 的图形用户界面 *gui-w16* *win16-gui* 10 | 11 | 1.启动图形界面 |gui-start| 12 | 2.设置 Vim 为默认的编辑器 |win16-default-editor| 13 | 3.使用剪贴板 |win16-clipboard| 14 | 4.命令行命令 |win16-shell-win32| 15 | 5.特殊颜色 |win16-colors| 16 | 6.Windows 对话框和浏览器 |win16-dialogs| 17 | 7.杂项 |win16-various| 18 | 19 | 其他相关文章: 20 | |gui.txt| 所有的 GUI 版本的通用功能 21 | |os_msdos.txt| DOS 和 Windows 版本的通用功能 22 | |gui_w32.txt| 这里也有一些功能适用于 Win16 版本 23 | 24 | {Vi 没有 Windows 图形界面} 25 | 26 | Win16 版本的 Vim 可以在 Windows 3.1 或者更高版本的 Windows 上运行。由于没有在 27 | Windows 3.0 上测试过,所以它也许不能在 Windows 3.0 上运行,除非你修改一下 Vim 28 | 的源代码,重新编译一次。(如果是这样还不如把你的系统升级到 Windows 3.11。:) 29 | 30 | 在很多方面,它与 Win32 GUI 版本基本相同,包括那个平坦样式的工具条!主要的不同 31 | 之处如下: 32 | 33 | 1) 为了节省资源和加快刷新速度,文本的字体不支持粗体和斜体。(你可以把源代码中的 34 | MSWIN16_FASTTEXT 定义注释掉,这样就可以重新启用这一功能。) 35 | 2) 没有可撕下菜单。 36 | 3) 没有 OLE 接口。 37 | 4) 不支持长文件名 (这是必然的)。 38 | 5) 工具栏上的按钮没有工具提示,取而代之的是命令行提示,有些类似于菜单的风格。 39 | 6) 一行最多容纳 32767 个字符 (16 位的 DOS 版本也是如此) 40 | 41 | 42 | ============================================================================== 43 | 1. 启动图形界面 *win16-start* 44 | 45 | Vim 的 Win16 GUI 版本呈现给你的是一个 Windows 窗口。无论你用什么方式启动它,也 46 | 不管你是否修改了它的文件名,它总是启动一个图形界面。Vim 的 Win16 GUI 没有所谓 47 | 的 'console' 版本,但是你可以在一个 DOS 窗口中启动一个 16-bit DOS 版本的 Vim。 48 | 49 | Vim 的 Win16 GUI 有一个额外的菜单选项:"窗口/选择字体",它会调用标准的 Windows 50 | 字体选择程序。备注: 为了获得 GDI 最快的绘图速度,粗体字和斜体字通常不支持。 51 | 52 | 设定菜单的高度对 Vim 的 Win16 GUI 版本不起作用。 53 | 54 | *win16-maximized* 55 | 如果你想让 Vim 在启动时最大化窗口,可以把下面的命令加到你的 vimrc 或 gvimrc 文 56 | 件中: > 57 | au GUIEnter * simalt ~x 58 | < 59 | gvim.exe 还有一个特别的版本,可以在 Windows 3.1 或 3.11 的 Win32s 子系统运行。 60 | 参见 |win32s|。 61 | 62 | ============================================================================== 63 | 2. 设置 Vim 为默认的编辑器 *win16-default-editor* 64 | 65 | 要把 Vim 设置为某一类文件的默认编辑器,可以用文件管理器的 "关联" 功能。 66 | 67 | 如果你通过双击用 Vim 打开一个文件,Vim 的当前目录会切换到文件所在目录。 68 | 69 | 参见 |notepad|。 70 | 71 | 72 | ============================================================================== 73 | 3. 使用剪贴板 *win16-clipboard* 74 | 75 | Windows 有一个剪贴板,你可以把文本从别的程序 "剪" 下来,放到剪贴板里,也可以把 76 | 剪贴板里的文本 "粘贴" 到别的程序里。在 Vim 里有多种办法完成这些操作。 77 | 这里的剪贴板与 Win32 版本完全相同:参见 |gui-clipboard|。 78 | 79 | ============================================================================== 80 | 4. 命令行命令 *win16-shell* 81 | 82 | Vim 用一个 DOS 窗口执行外部命令,这使得 Vim 可以运行任何 DOS 命令。这个窗口使 83 | 用 _default.pif 文件中的设置。 84 | 85 | *win16-!start* 86 | 通常 Vim 在一个命令结束之前不会继续进行下面的工作 (这对 Vim 从 shell 中捕获输 87 | 出是很有用的)。如果你想让 Vim 启动一个命令后立即返回,可以这样做: > 88 | :!start {command} 89 | 这可能只适用于 Windows 程序。 90 | 千万别忘了,当你切换回 Vim 的时候,一定让 Windows 3.1x 在后台继续运行那个你要 91 | 执行的 DOS 程序。 92 | 93 | ============================================================================== 94 | 5. 特殊颜色 *win16-colors* 95 | 96 | 在 Win16 中,可以使用 DOS 版本中定义的颜色。参见 |dos-colors|。 97 | 98 | 另外,系统颜色也一样可以使用。它们以 Sys_XXX 的形式出现,这里 XXX 是相应的颜色 99 | 名称 (对大小写不敏感),如下表所示:(更翔实的描述可以参看 Win32 手册)。 100 | 101 | Sys_BTNFace Sys_BTNShadow Sys_ActiveBorder 102 | Sys_ActiveCaption Sys_AppWorkspace Sys_Background 103 | Sys_BTNText Sys_CaptionText Sys_GrayText 104 | Sys_Highlight Sys_HighlightText Sys_InactiveBorder 105 | Sys_InactiveCaption Sys_InactiveCaptionText Sys_Menu 106 | Sys_MenuText Sys_ScrollBar Sys_Window 107 | Sys_WindowFrame Sys_WindowText 108 | 109 | 110 | 可能最有用的值是下面这些: 111 | Sys_Window 正常的窗口背景颜色 112 | Sys_WindowText 正常的窗口文字颜色 113 | Sys_Highlight 加亮的背景颜色 114 | Sys_HighlightText 加亮的文字颜色 115 | 116 | 还有一些额外可供使用的颜色: 117 | Gray、Grey、LightYellow、SeaGreen、Orange、Purple、SlateBlue、Violet。 118 | 119 | 参见 |rgb.txt|。 120 | 121 | ============================================================================== 122 | *win16-dialogs* 123 | 6. Windows 对话框和浏览器 124 | 125 | Vim 的控制台版本在各个平台上提供的用户界面是类似的,同样 Vim 的 Win16 GUI 版本 126 | 也会用与其他平台相似的视窗组件进行操作。 127 | 128 | 129 | 6.1 对话框 130 | 131 | 用 "confirm" 命令组 (例如:'confirm' 选项,|:confirm| 命令和 |confirm()| 函数) 132 | 调用的对话框是基于 GUI 而不是像其它版本那样是基于控制台的。没有选项可以改变这 133 | 种状况。 134 | 135 | 6.2 文件浏览器 136 | 137 | 如果你在文件编辑命令前加上 ":browse",Vim 就会弹出一个文件选择窗口,选择现存 138 | 文件。参见 |:browse|。 139 | 140 | 141 | ============================================================================== 142 | 7. 杂项 *win16-various* 143 | 144 | *win16-printing* 145 | 菜单 "文件/打印" 选项使用记事本程序中的打印功能。这虽然有点别扭,但是容易移 146 | 植。当然你可以定义自己的打印命令。例如,你可以找一下 16 位版本的 PrintFile。在 147 | $VIMRUNTIME/menu.vim 里你可以看到缺省是如何工作的。 148 | 149 | 下面这条命令同样好用: > 150 | :w >>prn 151 | 152 | Vim 支持许多 MS-Windows 的标准特性。一些相关的介绍可以在别的地方找到:参见 153 | |'mouse'|,|win32-hidden-menus|。也可以看看 |:simalt| 154 | 155 | *win16-drag-n-drop* 156 | 你可以把一个或多个文件拖到 Vim 窗口里,Vim 会以一般的方式打开它们。如果你在拖 157 | 动的过程中按住 Shift 键,Vim 会把当前目录切换到第一个被拖动文件所在的目录。如 158 | 果你在拖动的过程中按住 Ctrl 键,Vim 会分割一个新窗口来打开文件。否则只有在当前 159 | 缓冲区发生改变后才会分割新窗口。 160 | 你也可以把文件目录的图标拖到 Vim 里,但是 Vim 不会打开目录里的所有文件 (通常我 161 | 们也不希望它这么做),Vim 会切换到那个目录,并且打开一个新文件。 162 | 如果 Vim 处于命令行状态,被拖进来的文件和目录的名字会插入到光标所在的位置,这 163 | 样就可以在任何 Ex 命令里使用这些名字。 164 | 165 | *win16-truetype* 166 | 建议用光栅 (raster) 字体,不要用 TrueType 的等宽 (fixed-pitch) 字体。比如:用 167 | Courier,而不要用 Courier New。这样做不仅仅是节省资源,而且因为 Windows 3.1x 168 | 在处理等宽 TrueType 字体时有细微的问题。特别是你把块状光标移到管道字符 '|' 上 169 | 时,光标的大小会被画错,并且会留下痕迹。这个漏洞只出现在 Win3.1x GDI 里,在 170 | 95/NT 下面没有这种情况。 171 | 172 | vim:tw=78:sw=4:ts=8:ft=help:norl: 173 | -------------------------------------------------------------------------------- /doc/hangulin.cnx: -------------------------------------------------------------------------------- 1 | *hangulin.txt* For Vim version 7.2. 最近更新: 2006年7月 2 | 3 | 4 | VIM 参考手册 By Chi-Deok Hwang and Sung-Hyun Nam 5 | 译者: Willis 6 | http://vimcdoc.sf.net 7 | 8 | 简介 *hangul* 9 | ------------ 10 | 我们的目的是能够在 VIM 的 GUI 版本中输入 Hangul,韩国语的一种书写方式。如果你 11 | 有 XIM 程序,那么你可以用另外一个 |+xim| 特性。基本上,这个程序是给那些没有 12 | XIM 程序的人用的。 13 | 14 | 编译 15 | ------- 16 | 下面用的是些简单的选项。你可以加上其它配置选项。 > 17 | 18 | ./configure --with-x --enable-multibyte --enable-fontset --enable-hangulinput 19 | 20 | 你现在应该查看 feature.h。如果 |+hangul_input| 特性在配置时已经加入,你可以设 21 | 置更多的选项: 如把键盘类型设为 2 bulsik 或者 3 bulsik。在这里,你可以找到类似 22 | 于下述例子中的关键字。 > 23 | 24 | #define HANGUL_DEFAULT_KEYBOARD 2 25 | #define ESC_CHG_TO_ENG_MODE 26 | /* #define X_LOCALE */ 27 | /* #define SLOW_XSERVER */ 28 | 29 | 环境变量 30 | --------------------- 31 | 你应该设置 LANG 环境变量为韩国 locale,比如 ko 或者 ko_KR.euc。如果你设置了 32 | LC_ALL 环境变量,它应该也被设成韩国 locale。 33 | 34 | VIM 资源 35 | ------------ 36 | 你应该把下面的内容加到你自己全局的 vimrc ($HOME/.vimrc)。 > 37 | 38 | :set fileencoding=korea 39 | 40 | 键盘 41 | -------- 42 | 你可以通过修改 VIM_KEYWORD 或是 HANGUL_KEYBOARD_TYPE 环境变量改变你的键盘类型 43 | (2 bulsik 或是 3 bulsik)。在 sh 里,只要这么做 (2 bulsik): > 44 | 45 | export VIM_KEYBOARD="2" 46 | or > 47 | export HANGUL_KEYBOARD_TYPE="2" 48 | 49 | 如果两者都设置了,VIM_KEYBOARD 有优先权。 50 | 51 | Hangul 字体 52 | ------------ 53 | 你可以通过 $HOME/.Xdefaults 或自己的 .gvimrc 修改文本字体。不过对于 Hangul,你 54 | 应该修改你自己的 vimrc 的 'guifontset'。 55 | 56 | $HOME/.Xdefaults: > 57 | Vim.font: english_font 58 | 59 | ! 以下是 Athena 的 hangul 菜单 60 | *international: True 61 | Vim*fontSet: english_font,hangul_font 62 | 63 | ! 以下是 Motif 的 hangul 菜单 64 | *international: True 65 | Vim*fontList: english_font;hangul_font: 66 | 67 | $HOME/.gvimrc: > 68 | set guifontset=english_font,hangul_font 69 | 70 | 要 注意 其中用的是 , (逗号) 还是 ; (分号)。 71 | 72 | 还有,不要设 ':set guifont'。如果这项存在,那么 Gvim 忽略 ':set guifontset'。 73 | 这就意味着 VIM 不会提供 fontset 的支持,从而只有英语会正确显示,Hangul 就不会 74 | 了。 75 | 76 | 在 'fontset' 特性被打开后,VIM 不再允许使用 'font'。比如,如果你在 .gvimrc 里 77 | 用 > 78 | :set guifontset=eng_font,your_font 79 | 那么你的语法高亮应该这样写 > 80 | :hi Comment guifg=Cyan font=another_eng_font,another_your_font 81 | 如果你只是这么写 > 82 | :hi Comment font=another_eng_font 83 | 那么你会看到一个_很好的_错误信息。要 注意 ! 84 | 85 | hangul 字体 hangul_font 的宽度应该是英语字体 english_font 的宽度的两倍。 86 | 87 | 尚未支持的特性 88 | ------------------- 89 | Johab 字体还没能得到支持。我还没有这方面的计划。如果你确实想用 johab 字体, 90 | 你可以看看 gau 包里的 hanguldraw.c。 91 | 92 | Hanja 输入还没有支持。我也没有这方面计划。如果你确实想输入 Hanja,在 hanterm 93 | 上使用 VIM。 94 | 95 | 漏洞或者意见 96 | -------------- 97 | 请将意见、补丁和建议送到: 98 | 99 | Chi-Deok Hwang 100 | Nam SungHyun 101 | 102 | vim:tw=78:ts=8:ft=help:norl: 103 | -------------------------------------------------------------------------------- /doc/hebrew.cnx: -------------------------------------------------------------------------------- 1 | *hebrew.txt* For Vim version 7.2. 最近更新: 2008年4月 2 | 3 | 4 | VIM 参考手册 by Ron Aaron (and Avner Lottem) 5 | 译者: Willis 6 | http://vimcdoc.sf.net 7 | 8 | 9 | Vim 的希伯来语支持 (选项和映射) *hebrew* 10 | 11 | 12 | 'rightleft' 的功能是由 Avner Lottem 最早创建的。 13 | Ron Aaron 现在为支持这些功能提供帮助。 14 | 15 | {Vi 没有这些功能} 16 | 17 | 所有这些只有在编译时加入 |+rightleft| 特性才能得到。 18 | 19 | 20 | 简介 21 | ------------ 22 | 希伯来语专用的选项包括 'hkmap'、'hkmapp'、'keymap'=hebrew 和 'aleph'。 23 | 对希伯来语有用的选项包括 'delcombine'、'allowrevins'、'revins'、'rightleft' 24 | 和 'rightleftcmd'。 25 | 26 | 'rightleft' 模式反转显示的顺序,所以字符不是通常的从左到右,而是从右到左的显 27 | 示。这主要是对希伯来语和其它中东的语言有用。参阅 |rileft.txt| 去了解更多。 28 | 29 | 细节 30 | -------------- 31 | + 选项: 32 | + 'rightleft' ('rl') 把窗口朝向设为从右到左。这意味着逻辑上的文字 'ABC' 会 33 | 被显示成 'CBA'。文字将从窗口右边界开始输出,而不是左边。 34 | + 'hkmap' ('hk') 在插入/替换模式中把键盘映射设成希伯来方式。 35 | + 'aleph' ('al'),数值,保存 Aleph 的十进制代码,键盘映射用。 36 | + 'hkmapp' ('hkp') 把键盘映射设成 '根据读音的希伯来语'。 37 | 38 | 注意: 这三个选项 ('hkmap'、'hkmapp' 和 'aleph') 现在已经作废。你应该用 39 | ":set keymap=hebrewp" 来代替。 40 | 41 | + 'delcombine' ('deco'),布尔值,如果编辑 UTF-8 编码的希伯来文字,可以在一 42 | 个字符上 (带有 niqud ) 上按 'x' 来去掉 niqud 或者 te`amim。 43 | 44 | + 'rightleftcmd' ('rlc') 从右边开始显示用于搜索的命令行提示,这只适用于 45 | 'rightleft' 的窗口。 46 | 47 | + 编码: 48 | + Unix 上,ISO 8859-8 编码 (希伯来字母编码: 224-250)。 49 | + MS DOS 上,PC 编码 (希伯来字母编码: 128-154)。 50 | 这些都是缺省值,可以用 'aleph' 选项来覆盖。 51 | + 你应该选用 UTF8,因为它支持组合用字符 (如果不是 UTF8 编码,'deco' 什么都 52 | 不做)。 53 | 54 | + Vim 参数: 55 | + 'vim -H file' 启动希伯来文件 file 的编辑,也就是,打开 'rightleft' 和 56 | 'hkmap'。 57 | 58 | + 按键: 59 | + 'allowrevins' 选项使得 CTRL-_ 命令在插入和命令行模式下可用。 60 | 61 | + 插入/替换模式下的 CTRL-_ 切换 'revins' 和 'hkmap': 62 | 63 | 在从右到左的窗口里,'revins' 和 'nohkmap' 被切换,因为可能输入英语。 64 | 65 | 在从左到右的窗口里,'revins' 和 'hkmap' 被切换,因为可能输入希伯来语。 66 | 67 | CTRL-_ 把光标移到输入文本的结尾。 68 | 69 | + CTRL-_ 在命令行模式下切换键盘映射 (参见下面的漏洞)。 70 | 这个设置和 'hkmap' 无关,后者只适用于插入/替换模式。 71 | 72 | 注意: 在有些键盘上,CTRL-_ 被映射成 CTRL-?。 73 | 74 | + 'hkmap' 设置时,键盘的映射如下 (标准以色利键盘): 75 | 76 | q w e r t y u i o p 77 | / ' ק ר א ט ו ן ם פ 78 | 79 | a s d f g h j k l ; ' 80 | ש ד ג כ ע י ח ל ך ף , 81 | 82 | z x c v b n m , . / 83 | ז ס ב ה נ מ צ ת ץ . 84 | 85 | 这也是当 'keymap=hebrew' 设置时的映射方式。使用 'keymap' 的好处是它在 86 | UTF8 下正常工作,例如,输入的字符是正确的;'hkmap' 则不然。'keymap' 键盘 87 | 也可以插入 niqud 和 te`amim。要了解具体这些映射是什么,看看 'hebrew' 等 88 | 键盘映射文件。 89 | 90 | 反向输入 91 | 92 | 如果 'revins' (反向输入) 选项被打开,插入是反向的。这可以用来输入希伯来语。这 93 | 时,输入文字时,光标不动,文本向右移动。 删除光标下的字符,CTRL-W 和 94 | CTRL-U 工作的方向也经过反转。无论 'backspace' 选项如何设置,、CTRL-W 和 95 | CTRL-U 并不会在插入点开始处和行尾停住。 96 | 97 | 现在 (还) 没有反向替换模式。 98 | 99 | 如果设置了 "showmode" 选项,反向插入模式激活时,状态行会显示 100 | "-- REVERSE INSERT --"。 101 | 102 | 如果打开了 'allowrevins' 选项,CTRL-_ 也可以进入反向插入模式,而且还有一些附带 103 | 的功能: 首先,键盘映射根据窗口的朝向自动切换 - 如果在从左到右的窗口,'revins' 104 | 被用来输入希伯来文,所以键盘改变为希伯来方式 (设置 'hkmap');如果在从右到左的 105 | 窗口,'revins' 被用来输入英语,所以键盘切换成英语方式 (关闭 'hkmap')。其次,通 106 | 过 CTRL-_ 来退出 'revins' 时的光标移动到输入文字的末尾 (如果可能的话)。 107 | 108 | 在从右到左的窗口粘贴 109 | ---------------------------------- 110 | 如果用鼠标剪切文本,然后在从右到左的窗口中粘贴,文本会被反向,这时因为从剪切缓 111 | 冲区里得到的字符是从左到右的,而文件中的插入操作是从右到左的。要避免这个问题, 112 | 在粘贴前切换 'revins' 选项 (通过键入 CTRL-? 或者 CTRL-_ )。 113 | 114 | 115 | 希伯来字母和 'isprint' 变量 116 | -------------------------------------------- 117 | 有时希伯来字母代码在 'isprint' 变量定义的非可显示字符的范围内。例如,在 Linux 118 | 控制台上,希伯来字体的编码从 128 开始,而缺省的 'isprint' 变量是 @,161-255。 119 | 结果就是所有的希伯来字母都被显示成 ~x。要解决这个问题,执行 > 120 | set isprint=@,128-255 121 | 122 | 123 | vim:tw=78:ts=8:ft=help:norl: 124 | -------------------------------------------------------------------------------- /doc/help.cnx: -------------------------------------------------------------------------------- 1 | *help.txt* For Vim version 7.2. 最近更新:2008年8月 2 | 3 | VIM - 主帮助文件 4 | k 5 | 移动: 使用光标键,或者用 "h" 向左, h l 6 | "j" 向下,"k" 向上,"l" 向右。 j 7 | 关闭本窗口: 使用 ":q"。 8 | 离开 Vim: 使用 ":qa!" (当心,所有的改动都会丢失!)。 9 | 10 | 跳转到一个主题: 将光标置于标签 (例如 |bars|) 上然后输入 CTRL-]。 11 | 使用鼠标: ":set mouse=a" 启动对鼠标的支持 (用于 xterm 或 GUI)。 12 | 在标签 (例如 |bars|) 上双击。 13 | 跳回: 键入 CTRL-T 或 CTRL-O (重复则继续向后)。 14 | 15 | 获取特定帮助: 在 |:help| 命令后给出参数可以直接跳转到任何的帮助主题。 16 | 还可以进一步指定上下文: 17 | *help-context* 18 | 类别 前缀 例子 ~ 19 | 普通模式命令 (无) :help x 20 | 可视模式命令 v_ :help v_u 21 | 插入模式命令 i_ :help i_ 22 | 命令行模式命令 : :help :quit 23 | 命令行编辑 c_ :help c_ 24 | Vim 命令参数 - :help -r 25 | 选项 ' :help 'textwidth' 26 | 查找帮助: 键入 ":help word",接着键入 CTRL-D 可以看到匹配 "word" 的 27 | 帮助主题。 28 | 29 | VIM 代表 Vi IMproved。VIM 主要由 Bram Moolenaar 编写,但没有许多其他人的帮助是 30 | 不可能的。请见 |credits|。 31 | ------------------------------------------------------------------------------ 32 | *doc-file-list* *Q_ct* 33 | 基础: 34 | |quickref| 总览最常用的命令 35 | |tutor| 面向初学者的 30 分钟教程 36 | |copying| 版权信息 37 | |iccf| 资助乌干达贫困儿童 38 | |sponsor| 赞助 Vim 的开发,成为一名注册用户 39 | |www| 互联网上的 Vim 40 | |bugs| 如何提交漏洞报告 41 | 42 | 用户手册:这些文件解释如何完成一项编辑任务。 43 | 44 | |usr_toc.txt| 目录 45 | 46 | 初步知识 ~ 47 | |usr_01.txt| 关于本手册 48 | |usr_02.txt| Vim 初步 49 | |usr_03.txt| 移动 50 | |usr_04.txt| 做小改动 51 | |usr_05.txt| 选项设置 52 | |usr_06.txt| 使用语法高亮 53 | |usr_07.txt| 编辑多个文件 54 | |usr_08.txt| 分割窗口 55 | |usr_09.txt| 使用 GUI 版本 56 | |usr_10.txt| 做大修改 57 | |usr_11.txt| 从崩溃中恢复 58 | |usr_12.txt| 小窍门 59 | 60 | 高效地编辑 ~ 61 | |usr_20.txt| 快速键入命令行 62 | |usr_21.txt| 离开和回来 63 | |usr_22.txt| 寻找要编辑的文件 64 | |usr_23.txt| 编辑特殊文件 65 | |usr_24.txt| 快速插入 66 | |usr_25.txt| 编辑带格式的文本 67 | |usr_26.txt| 重复 68 | |usr_27.txt| 查找命令及模式 69 | |usr_28.txt| 折叠 70 | |usr_29.txt| 在代码间移动 71 | |usr_30.txt| 编辑程序 72 | |usr_31.txt| 利用 GUI 73 | |usr_32.txt| 撤销树 74 | 75 | 调节 Vim ~ 76 | |usr_40.txt| 创建新的命令 77 | |usr_41.txt| 编写 Vim 脚本 78 | |usr_42.txt| 添加新的菜单 79 | |usr_43.txt| 使用文件类型 80 | |usr_44.txt| 自定义语法高亮 81 | |usr_45.txt| 选择你的语言 82 | 83 | 让 Vim 工作~ 84 | |usr_90.txt| 安装 Vim 85 | 86 | 87 | 参考手册:这些文件详细地解释 Vim 的每个细节。 *reference_toc* 88 | 89 | 一般主题 ~ 90 | |intro.txt| 对 Vim 的一般介绍;帮助文件中所使用的符号 91 | |help.txt| 总览及快速参考 (本文件) 92 | |index.txt| 以字母顺序排列的命令索引 93 | |help-tags| 可跳转的所有标签 (标签索引) 94 | |howto.txt| 如何完成最常见的编辑任务 95 | |tips.txt| Vim 的各种窍门 96 | |message.txt| (错误) 信息及解释 97 | |quotes.txt| Vim 的用户评价 98 | |todo.txt| 已知的问题以及扩展计划 99 | |develop.txt| Vim 的开发 100 | |debug.txt| 调试 Vim 自身 101 | |uganda.txt| Vim 发布条件和怎么花你的 money 102 | 103 | 基本编辑 ~ 104 | |starting.txt| 启动 Vim,Vim 命令参数,初始化 105 | |editing.txt| 编辑和写入文件 106 | |motion.txt| 有关移动的命令 107 | |scroll.txt| 在窗口中滚动文本 108 | |insert.txt| 插入模式和替换模式 109 | |change.txt| 删除和替换文本 110 | |indent.txt| C 及其它语言的自动缩进 111 | |undo.txt| 撤消和重做 112 | |repeat.txt| 重复命令,Vim 脚本及调试 113 | |visual.txt| 使用可视模式 (选择一个文本区域) 114 | |various.txt| 各种其它命令 115 | |recover.txt| 从崩溃中恢复 116 | 117 | 高级编辑 ~ 118 | |cmdline.txt| 命令行编辑 119 | |options.txt| 所有选项的描述 120 | |pattern.txt| 正则表达式及查找命令 121 | |map.txt| 键盘映射及缩写 122 | |tagsrch.txt| 标签及特殊查找 123 | |quickfix.txt| 支持快速 编辑-编译-修正 循环的命令 124 | |windows.txt| 使用多窗口多缓冲区的命令 125 | |tabpage.txt| 使用多个标签页的命令 126 | |syntax.txt| 语法高亮 127 | |spell.txt| 拼写检查 128 | |diff.txt| 编辑同一文本的两到四个版本 129 | |autocmd.txt| 当事件发生时自动执行命令 130 | |filetype.txt| 对某一类型文件的专有设定 131 | |eval.txt| 表达式求值,条件执行命令 132 | |fold.txt| 隐藏 (折叠) 一定范围内的文本 133 | 134 | 特殊问题 ~ 135 | |print.txt| 打印 136 | |remote.txt| 将 Vim 用作服务器/客户端 137 | |term.txt| 使用不同终端和鼠标 138 | |digraph.txt| 可用的二合字母清单 139 | |mbyte.txt| 多字节文本支持 140 | |mlang.txt| 非英语语言支持 141 | |arabic.txt| 阿拉伯语支持及编辑 142 | |farsi.txt| Farsi (波斯语) 编辑 143 | |hebrew.txt| 希伯来语支持及编辑 144 | |russian.txt| 俄罗斯语支持及编辑 145 | |ft_ada.txt| Ada (编程语言) 支持 146 | |hangulin.txt| Hangul (韩语) 输入模式 147 | |rileft.txt| 从右向左的编辑模式 148 | 149 | GUI ~ 150 | |gui.txt| 图形用户界面 (GUI) 151 | |gui_w16.txt| Windows 3.1 GUI 152 | |gui_w32.txt| Win32 GUI 153 | |gui_x11.txt| X11 GUI 154 | 155 | 各种接口 ~ 156 | |if_cscop.txt| 联用 cscope 与 Vim 157 | |if_mzsch.txt| MzScheme 接口 158 | |if_perl.txt| Perl 接口 159 | |if_pyth.txt| Python 接口 160 | |if_sniff.txt| SNiFF+ 接口 161 | |if_tcl.txt| Tcl 接口 162 | |if_ole.txt| Win32 下的 OLE 接口 163 | |if_ruby.txt| Ruby 接口 164 | |debugger.txt| 与调试程序的接口 165 | |workshop.txt| Sun Visual Workshop 接口 166 | |netbeans.txt| NetBeans 外部编辑器接口 167 | |sign.txt| 调试标号 168 | 169 | 版本 ~ 170 | |vi_diff.txt| Vim 和 Vi 之间的主要区别 171 | |version4.txt| Vim 3.0 和 4.x 版本的区别 172 | |version5.txt| Vim 4.6 和 5.x 版本的区别 173 | |version6.txt| Vim 5.7 和 6.x 版本的区别 174 | |version7.txt| Vim 6.4 和 7.x 版本的区别 175 | *sys-file-list* 176 | 特定系统相关 ~ 177 | |os_390.txt| OS/390 Unix 178 | |os_amiga.txt| Amiga 179 | |os_beos.txt| BeOS 和 BeBox 180 | |os_dos.txt| MS-DOS 和 MS-Windows NT/95 通用的条目 181 | |os_mac.txt| Macintosh 182 | |os_mint.txt| Atari MiNT 183 | |os_msdos.txt| MS-DOS (纯 DOS 及 Windows 内的 DOS 窗口) 184 | |os_os2.txt| OS/2 185 | |os_qnx.txt| QNX 186 | |os_risc.txt| RISC-OS 187 | |os_unix.txt| Unix 188 | |os_vms.txt| VMS 189 | |os_win32.txt| MS-Windows 95/98/NT 190 | *standard-plugin-list* 191 | 标准插件 ~ 192 | |pi_getscript.txt| 下载 Vim 脚本的最新版本 193 | |pi_gzip.txt| 读写压缩过的文件 194 | |pi_netrw.txt| 通过网络读写文件 195 | |pi_paren.txt| 高亮匹配括号 196 | |pi_tar.txt| Tar 文件探索器 197 | |pi_vimball.txt| 创建自安装的 Vim 脚本 198 | |pi_zip.txt| Zip 归档探索器 199 | 200 | 本地附加文档 201 | |local-additions| 请查阅英文文档 202 | 203 | 204 | ------------------------------------------------------------------------------ 205 | *bars* Bars 举例 206 | 207 | 现在你已经通过 CTRL-] 或双击鼠标跳转到这里了,CTRL-T、CTRL-O、g、 208 | 或 可以用来跳回到你原来的地方。 209 | 210 | 注意 标签包含在两个 | 字符之间,但打开高亮时这些字符被隐藏,这样更易于命令的阅 211 | 读。 212 | 213 | 不过,你可以在任何单词上按 CTRL-],即使该单词不出现在 | 之间也无妨。Vim 会试图 214 | 寻找该单词的相关帮助。 215 | 216 | ------------------------------------------------------------------------------ 217 | vim:tw=78:fo=tcq2:isk=!-~,^*,^\|,^\":ts=8:ft=help:norl: 218 | -------------------------------------------------------------------------------- /doc/howto.cnx: -------------------------------------------------------------------------------- 1 | *howto.txt* For Vim version 7.2. 最近更新: 2006年5月 2 | 3 | 4 | Vim 参考手册 作者:Bram Moolenaar 5 | 译者: iCrazy http://vimcdoc.sf.net 6 | 7 | 8 | 如何…… *howdoi* *how-do-i* *howto* *how-to* 9 | 10 | |tutor| 入门 11 | |:quit| 退出?我被困住了,请帮帮我! 12 | |initialization| 初始化 Vim 13 | |vimrc-intro| 写一个 Vim 脚本文件 (vimrc) 14 | |suspend| 挂起 Vim 15 | |usr_11.txt| 在一次崩溃后恢复 16 | |07.4| 在覆盖我的文件时保留一个备份 17 | 18 | |usr_07.txt| 编辑文件 19 | |23.4| 编辑二进制文件 20 | |usr_24.txt| 插入文本 21 | |deleting| 删除文本 22 | |usr_04.txt| 改变文本 23 | |04.5| 复制和移动文本 24 | |usr_25.txt| 给文本排版 25 | |30.6| 给注释排版 26 | |30.2| 缩进 C 程序 27 | |25.3| 自动设置缩进 28 | 29 | |usr_26.txt| 重复执行命令 30 | |02.5| 撤销和重做 31 | 32 | |usr_03.txt| 在文本中移动 33 | |word-motions| 基于单词的移动 34 | |left-right-motions| 左右移动 35 | |up-down-motions| 上下移动 36 | |object-motions| 基于文本对象的移动 37 | |various-motions| 其它移动方式 38 | |object-select| 基于文本对象的选择 39 | |'whichwrap'| 移动时跳过换行符 40 | |'virtualedit'| 移动到没有文本的地方 41 | |usr_27.txt| 指定查找的模式 42 | |tags-and-searches| 进行标签和特殊查找 43 | |29.4| 在包含文件中查找变量、函数或宏 44 | |K| 查找光标处关键词的手册页 45 | 46 | |03.7| 滚屏 47 | |'sidescroll'| 水平/竖直方向滚屏 48 | |'scrolloff'| 设置可见的上下文行数 49 | 50 | |mode-switching| 切换模式 51 | |04.4| 使用可视模式 52 | |'insertmode'| 以插入模式启动 Vim 53 | 54 | |40.1| 映射热键 55 | |24.7| 创建缩写 56 | 57 | |ins-expandtab| 在插入模式下用空格扩展制表符 58 | |i_CTRL-R| 在插入模式下插入寄存器的内容 59 | |24.3| 在插入模式下自动补全单词 60 | |25.1| 断开过长的行 61 | 62 | |20.1| 编辑命令行 63 | |20.3| 命令行自动补全 64 | |'cmdheight'| 增加命令行的高度 65 | |10.3| 指定命令行范围 66 | |40.3| 指定在 读/写 或 进入/离开 缓冲区/窗口 之前/之后 67 | 自动执行命令 68 | 69 | |'autowrite'| 自动存盘 70 | |30.1| 加速 编辑-编译-编辑 循环,在 Vim 里面编译和修正错误 71 | 72 | |options| 设置选项 73 | |auto-setting| 自动设置选项 74 | |term-dependent-settings| 设置依赖于终端名称的选项 75 | |save-settings| 保存设置 76 | |:quote| 对我的 .vim 文件进行注释 77 | |'helpheight'| 调整默认的帮助高度 78 | |'highlight'| 设置各种高亮模式 79 | |'title'| 设置窗口标题 80 | |'icon'| 设置窗口图标标题 81 | |'report'| 避免看到每一行上的改变信息 82 | |'shortmess'| 避免按回车 |hit-enter| 提示 83 | 84 | |mouse-using| 在 Vim 中使用鼠标 85 | |usr_08.txt| 管理多窗口和缓冲区 86 | |gui.txt| 使用 GUI 87 | 88 | |您 (还) 不能!| 用 Vim 洗盘子 :) 89 | 90 | |usr_06.txt| 打开语法高亮 91 | |2html.vim| 把一个彩色的文件转换成 HTML 92 | |less| 用 Vim 模拟 less 或 more,但带有语法高亮 93 | 94 | vim:tw=78:ts=8:ft=help:norl: 95 | -------------------------------------------------------------------------------- /doc/if_ole.cnx: -------------------------------------------------------------------------------- 1 | *if_ole.txt* For Vim version 7.2. 最后更新: 2007年5月 2 | 3 | 4 | VIM 参 考 手 册 作者: Paul Moore 5 | 译者: Dasn 6 | http://vimcdoc.sf.net 7 | 8 | 9 | Vim 的 OLE 接口 *ole-interface* 10 | 11 | 1. 激活 OLE 功能 |ole-activation| 12 | 2. 方法 |ole-methods| 13 | 3. "normal" 命令 |ole-normal| 14 | 4. 注册 |ole-registration| 15 | 5. 与微软的 Visual Studio 集成 |MSVisualStudio| 16 | 17 | {Vi 没有这些功能} 18 | 19 | OLE 只有在编译时加入 |+ole| 才可以使用。参见 src/if_ole.INSTALL。 20 | 有一点不同之处在于它使用 客户机服务器 模式进行通信 |clientserver|。 21 | 22 | ============================================================================== 23 | 1. 激活 OLE 功能 *ole-activation* 24 | 25 | Vim 可以作为 OLE 服务器运行,能被任意的 OLE 客户端访问,例如:我们可以用 26 | Visual Basic,Python,或者 Perl 与 Vim 通信。Vim 的程序名 (在 OLE 中称为 27 | "ProgID") 是 "Vim.Application"。 28 | 29 | 因此,要启动一个 Vim 实例 (或者要与一个已经启动的实例通信),你应该使用类似于下 30 | 面的代码: 31 | 32 | [Visual Basic] > 33 | Dim Vim As Object 34 | Set Vim = CreateObject("Vim.Application") 35 | 36 | [Python] > 37 | from win32com.client.dynamic import Dispatch 38 | vim = Dispatch('Vim.Application') 39 | 40 | [Perl] > 41 | use Win32::OLE; 42 | $vim = new Win32::OLE 'Vim.Application'; 43 | 44 | [C#] > 45 | // 在项目中加入 VIM 的引用。 46 | // 选择 COM 标签页。 47 | // 选择 "VIM Ole Interface 1.1 Type Library" 48 | Vim.Vim vimobj = new Vim.Vim(); 49 | 50 | Vim 不能作为 "隐藏" 的 OLE 服务器来运行,这一点 Vim 不像其它一些 OLE 服务器。 51 | Vim 的 OLE 客户端启动时,一个 Vim 程序的实例会立刻显现出来。简单地断开 OLE 连 52 | 接不能关掉 Vim 实例,需要显式地执行退出命令才可以 (例如,:qa!,:wqa)。 53 | 54 | ============================================================================== 55 | 2. 方法 *ole-methods* 56 | 57 | Vim 为客户端提供了四种方法。 58 | 59 | *ole-sendkeys* 60 | SendKeys(keys) 执行一系列键击。 61 | 62 | 这个函数只需要一个参数,参数 keys 代表要敲击的字符串。通过此函数发送这些字符串 63 | 和你直接在 Vim 里敲击键盘的效果是一样的。特殊键可以用它们的 <..> 名字,就像映 64 | 射的右手边里的格式一样 (参考 |:map| 特殊键的表达方式译者)。备注: 不支持 Ex 模 65 | 式下的 "normal" 命令 见下面 |ole-normal|。 66 | 67 | 例子:(Visual Basic 语法) > 68 | Vim.SendKeys "ihello" 69 | Vim.SendKeys "ma1GV4jy`a" 70 | 71 | 这个例子假设 Vim 处于普通模式,要强制进入普通模式,可以在字符序列前加入 72 | CTRL-\ CTRL-N,就像这样: > 73 | 74 | Vim.SendKeys "ihello" 75 | 76 | (译者注:下面是 Perl 语法: > 77 | 78 | $vim->SendKeys("ihello"); 79 | < 80 | 备注: 在 Perl 语法里,特殊字符前需要加 "\"。) 81 | 82 | CTRL-\ CTRL-N 使得 Vim 从插入模式或命令行模式返回普通模式。 83 | 备注: 不能用这个命令发送 Vim 命令的一部分。 84 | *ole-eval* 85 | Eval(expr) 计算表达式的值。 86 | 87 | 函数只有一个参数 expr,Vim 正常格式的表达式 (参考 |expression|)。返回值是一个 88 | 包含表达式结果的字符串。|List| 通过连接项目并插入换行符以转化为字符串。 89 | 90 | 例子:(Visual Basic 语法) > 91 | 92 | Line20 = Vim.Eval("getline(20)") 93 | Twelve = Vim.Eval("6 + 6") ' 注意,这是一个字符串。 94 | Font = Vim.Eval("&guifont") 95 | < 96 | *ole-setforeground* 97 | SetForeground() 让 Vim 窗口转入前台工作。 98 | 99 | 这个函数没有参数,没有返回值。 100 | 101 | 例子:(Visual Basic 语法) > 102 | 103 | Vim.SetForeground 104 | < 105 | *ole-gethwnd* 106 | GetHwnd() 返回 Vim 窗口的句柄。 107 | 108 | 这个函数没有参数,它返回 Vim 主窗口的句柄。你可以用它来控制 Vim 窗口,或者跟踪 109 | 窗口的 z-深度 等位置。 110 | 111 | 例子:(Visual Basic 语法) > 112 | 113 | Vim_Hwnd = Vim.GetHwnd 114 | < 115 | 116 | ============================================================================== 117 | 3. "normal" 命令 *ole-normal* 118 | 119 | 因为 Vim 是通过 ex 模式下的 :normal 命令来实现对 OLE 命令的处理,所以 Vim 不能 120 | 通过 OLE 执行 :normal 命令。如果你这样做,肯定没用。至于产生的结果,可许没什么 121 | 害处,也许不能预料。 122 | 123 | 现在没有办法能捕获这种错误,所以用户在使用的时候要注意有这么一个限制。 124 | ============================================================================== 125 | 4. 注册 *ole-registration* *E243* 126 | 127 | 在 Vim 作为 OLE 服务器运行之前,必须向系统注册。如果你想注册,可以在运行 Vim 128 | 的时候加一个参数 "-register"。 129 | *-register* > 130 | gvim -register 131 | 132 | 如果运行 OLE 版本的 gvim 时,Vim 的 OLE 服务没有注册,gvim 会弹出一个对话框, 133 | 让你选择是否注册,选择 "Yes" 注册。 134 | 135 | 有时候可能注册不会成功,这可能是因为注册表不可写。如果是这个原因,你需要以管理 136 | 员的身份来运行 gvim。 137 | 138 | 一旦注册,Vim 的路径就会被存储到注册表里。在你移动、删除或升级 Vim 之前,应该 139 | 使用 "-unregister" 清除这些注册信息。 140 | *-unregister* > 141 | gvim -unregister 142 | 143 | 系统会使用最先注册的 Vim 执行 OLE 命令。如果 Vim 已经运行,那么就使用当前运行 144 | 的 Vim。如果你不想让 (多个) Vim 响应 OLE 命令,请使用非 OLE 版本的 Vim,并且把 145 | 它放到别的目录里。这时,OLE 版本的 Vim 路径不应包含在你的正常路径里,这样当你 146 | 键入 "gvim" 时启动的才是非 OLE 版本。 147 | 148 | *-silent* 149 | 如果不想让 Vim 在注册时弹出对话框,可以在前面加 "-silent" 参数: 150 | > 151 | gvim -silent -register 152 | gvim -silent -unregister 153 | 154 | ============================================================================== 155 | 5. 与微软的 Visual Studio 集成 *MSVisualStudio* *VisVim* 156 | 157 | Vim 的 OLE 版本可以用做 Visual Studio 的文本编辑器。这被称作 "VisVim"。OLE 版 158 | 本的软件包里有一个 runtime 目录,详细的说明请参阅该目录下的 README_VisVim.txt 159 | 文件。 160 | 161 | 162 | 在 Visual Studio .Net 里使用 Vim ~ 163 | 164 | .Net 里不再需要 VisVim 了,因为 .Net Studio 已经提供了外部编辑器的支持。按以下 165 | 步骤进行: 166 | 167 | 在 .Net Studio 里,选择菜单 Tools->External Tools... 168 | 加入 169 | Title - Vim 170 | Command - c:\vim\vim63\gvim.exe 171 | Arguments - --servername VS_NET --remote-silent "+call cursor($(CurLine), $(CurCol))" $(ItemPath) 172 | Init Dir - 空 173 | 174 | 现在在 .Net 里打开文件时,可以在 .Net 菜单里选择: Tools->Vim 175 | 176 | 这样就能在 Vim 里打开文件。 177 | 可以把该外部命令作为图标加入,把它放在任何你喜欢的位置上。也可以把它设为你的缺 178 | 省编辑器。 179 | 180 | 如果你有进一步的改进,请到 Vim 邮件列表上发帖,以告知我们。 181 | 182 | --servername VS_NET 183 | 建立 vim 的新实例,名为 VS_NET。这样如果你从 VS 里打开多个文件,它们会使用相同 184 | 的 Vim 实例。这样,你可以运行多个 Vim 的备份,但可以控制在哪个里编辑 VS 文件。 185 | 186 | --remote-silent "+call cursor(10, 27)" 187 | - 把光标放在第 10 行第 27 列 188 | Vim 里 > 189 | :h --remote-silent 可以了解详情 190 | 191 | [.Net 的评注由 Dave Fishburn 和 Brian Sturk 提供] 192 | 193 | ============================================================================== 194 | vim:tw=78:ts=8:ft=help:norl: 195 | 196 | -------------------------------------------------------------------------------- /doc/if_perl.cnx: -------------------------------------------------------------------------------- 1 | *if_perl.txt* For Vim version 7.2. 最近更新: 2006年7月 2 | 3 | 4 | VIM REFERENCE MANUAL by Sven Verdoolaege 5 | and Matt Gerassimof 6 | 译者: foolstone@ustc.edu,Willis,tocer 7 | http://vimcdoc.sf.net 8 | 9 | 10 | Perl 与 Vim *perl* *Perl* 11 | 12 | 1. 编辑 Perl 文档 |perl-editing| 13 | 2. 编译带 Perl 接口的 VIM |perl-compiling| 14 | 3. Perl 接口的使用 |perl-using| 15 | 4. 动态调入 |perl-dynamic| 16 | 17 | {Vi 没有上述这些功能} 18 | Perl 接口只有在编译 Vim 时加入 |+perl| 才能使用。 19 | 20 | ============================================================================== 21 | 1. 编辑 Perl 文件 *perl-editing* 22 | 23 | Vim 语法高亮显示支持 Perl 和 POD 文件。Vim 假设后缀为 .pl 和 .pm 的文件是 Perl 24 | 文件。Vim 同时不管文件后缀而测试文件的首行来检查一个文件是否为 Perl 脚本 (参见 25 | Vim 的 syntax 目录下的 scripts.vim)。Vim 假设带后缀 .POD 的文件是 POD 文本。 26 | 27 | 要使用 Perl 标签,你需要 Exuberant ctags 的最新版本。在这里可以找到它: 28 | http://ctags.sourceforge.net 29 | 30 | 当然,作为选择你还可以用一个叫 pltags.pl 的 Perl 脚本,它和 Vim 一起发行的,位 31 | 于 $VIMRUNTIME/tools 目录下。这个脚本比 Exuberant ctags 的 Perl 支持具备更多的 32 | 功能。 33 | 34 | ============================================================================== 35 | 2. 编译带 Perl 接口的 VIM *perl-compiling* 36 | 37 | 为了编译带 Perl 接口的 Vim,需要 Perl 5.004 (或者更新) 的版本。Perl 必须在你编 38 | 译 Vim 前安装。 Vim 的 Perl 接口_不能_和官方发行的 Perl 5.003 一起正常工作!它 39 | 也许能和 Perl 5.003_05 或者更新版本一起正常工作。 40 | _[译者注]到翻译的时候,这个问题已经不会是大问题了_ 41 | 42 | Vim 的 Perl 补丁由 43 | Sven Verdoolaege 和 44 | Matt Gerassimof 45 | 制作。 46 | 47 | Perl 的 MS-Windows 版本可以在下面这个网址找到: 48 | http://www.perl.com/CPAN/ports/nt/Standard/x86/ 49 | 50 | ============================================================================== 51 | 3. Perl 接口的使用 *perl-using* 52 | 53 | *:perl* *:pe* 54 | :pe[rl] {cmd} 执行 Perl 命令 {cmd}。当前包是 "main"。 55 | 56 | :pe[rl] << {endpattern} 57 | {script} 58 | {endpattern} 59 | 执行 Perl 脚本 {script}。 60 | {endpattern} _不能_有任何前导空格。如果忽略了 61 | {endpattern},就会像 |:append| 和 |:insert| 命令那样, 62 | 默认为点 '.'。在函数内使用时,最好指明 '.',因为 "$i;" 63 | 看起来像 Vim 的 |:insert| 命令的开始。 64 | |:perl| 命令的这种形式主要是用来在 vim 脚本里面包含 65 | perl 代码。 66 | 备注: 当 Perl 特性没有被编译进 vim 时这条命令不能工 67 | 作。为了避免出错,请参考 |script-here|。 68 | vim 脚本示例: > 69 | 70 | function! WhitePearl() 71 | perl << EOF 72 | VIM::Msg("pearls are nice for necklaces"); 73 | VIM::Msg("rubys for rings"); 74 | VIM::Msg("pythons for bags"); 75 | VIM::Msg("tcls????"); 76 | EOF 77 | endfunction 78 | < 79 | 80 | *:perldo* *:perld* 81 | :[range]perld[o] {cmd} 对 [range] 中的每行执行 Perl 命令 {cmd},同时 $_ 依次 82 | 被赋值为每行的文本,但不包括行尾的 。改变 $_ 会改 83 | 变每行的内容,但注意不能用这个命令添加或者删除行。 84 | [range] 的缺省值是整个文件: "1,$"。 85 | 86 | 可以试一下下面的代码: > 87 | 88 | :perl $a=1 89 | :perldo $_ = reverse($_);1 90 | :perl VIM::Msg("hello") 91 | :perl $line = $curbuf->Get(42) 92 | < 93 | 94 | *E299* 95 | 在沙盘 |sandbox| 里执行 Perl 命令是受限制的。":perldo" 根本就不能执行。如果可 96 | 能,":perl" 会在安全环境下被执行。 97 | 98 | *perl-overview* 99 | 下面是在 Perl 下可用的函数概要: > 100 | 101 | :perl VIM::Msg("Text") # 显示信息 102 | :perl VIM::Msg("Error", "ErrorMsg") # 显示错误信息 103 | :perl VIM::Msg("remark", "Comment") # 显示高亮的信息 104 | :perl VIM::SetOption("ai") # 设定一个 vim 选项 105 | :perl $nbuf = VIM::Buffers() # 返回缓冲区的个数 106 | :perl @buflist = VIM::Buffers() # 返回所有缓冲区的数组 107 | :perl $mybuf = (VIM::Buffers('qq.c'))[0] # 返回一个 'qq.c' 的缓冲区对象 108 | :perl @winlist = VIM::Windows() # 返回所有窗口的数组 109 | :perl $nwin = VIM::Windows() # 返回窗口的个数 110 | :perl ($success, $v) = VIM::Eval('&path') # $v: 'path' 选项值,$success: 1 111 | :perl ($success, $v) = VIM::Eval('&xyz') # $v: '' 而 $success: 0 112 | :perl $v = VIM::Eval('expand("")') # 展开文件 113 | :perl $curwin->SetHeight(10) # 设定窗口高度 114 | :perl @pos = $curwin->Cursor() # 返回坐标 (row,col) 数组 115 | :perl @pos = (10, 10) 116 | :perl $curwin->Cursor(@pos) # 把光标位置设为 @pos 117 | :perl $curwin->Cursor(10,10) # 把光标位置设为第 10 行第 10 列 118 | :perl $mybuf = $curwin->Buffer() # 返回窗口的缓冲区对象 119 | :perl $curbuf->Name() # 返回缓冲区名字 120 | :perl $curbuf->Number() # 返回缓冲区编号 121 | :perl $curbuf->Count() # 返回行数 122 | :perl $l = $curbuf->Get(10) # 返回第 10 行 123 | :perl @l = $curbuf->Get(1 .. 5) # 返回第 1 到第 5 行 124 | :perl $curbuf->Delete(10) # 删除第 10 行 125 | :perl $curbuf->Delete(10, 20) # 删除第 10-20 行 126 | :perl $curbuf->Append(10, "Line") # 添加一行 127 | :perl $curbuf->Append(10, "Line1", "Line2", "Line3") # 添加三行 128 | :perl @l = ("L1", "L2", "L3") 129 | :perl $curbuf->Append(10, @l) # 添加 L1,L2 和 L3 130 | :perl $curbuf->Set(10, "Line") # 替换第 10 行 131 | :perl $curbuf->Set(10, "Line1", "Line2") # 替换第 10 行和第 11 行 132 | :perl $curbuf->Set(10, @l) # 分别用 L1,L2 和 L3 替换 10-12 行 133 | < 134 | *perl-Msg* 135 | VIM::Msg({msg}, {group}?) 136 | 显示消息 {msg}。可选 {group} 参数指定用来显示这个消息 137 | 的高亮方式。 138 | 139 | *perl-SetOption* 140 | VIM::SetOption({arg}) 141 | 设置一个 vim 选项。{arg} 可以是任何 ":set" 命令能接受 142 | 的参数。这就意味着参数里面不允许有空格!见 |:set|。 143 | 144 | *perl-Buffers* 145 | VIM::Buffers([{bn}...]) 没有参数的时候,在数组上下文里面返回所有缓冲区的列表, 146 | 在标量上下文里返回缓冲区的个数。对于一个缓冲区名字或者 147 | 编号的列表 {bn},返回匹配 {bn} 的缓冲区列表,与 Vim 内 148 | 部函数 |bufname()| 使用同样的规则。 149 | 警告: 使用 |:bwipe| 后,该列表就不合法了。如果要强行使 150 | 用会使 Vim 崩溃。 151 | 152 | *perl-Windows* 153 | VIM::Windows([{wn}...]) 没有参数的时候,在数组上下文里面返回所有窗口的列表,在 154 | 标量上下文里返回窗口的个数。对于一个窗口编号的列表 155 | {wn},返回匹配 {wn} 的窗口列表。 156 | 警告: 窗口关闭后,该列表就不合法了。如果要强行使用会使 157 | Vim 崩溃。 158 | 159 | *perl-DoCommand* 160 | VIM::DoCommand({cmd}) 执行 Ex 命令 {cmd}。 161 | 162 | *perl-Eval* 163 | VIM::Eval({expr}) 对 {expr} 求值并返回 (success,val)。success=1 表示 164 | val 包含 {expr} 的值。success=0 表示表达式求值失败。 165 | '@x' 返回寄存器 x 的内容, '&x' 返回选项 x 的值,'x' 166 | 返回内部变量 x 的值,'$x' 等价于 perl 中的 $ENV{x}。所 167 | 有在命令行可以访问的函数都可用于 {expr}。 168 | 列表 |List| 通过连接项目并在项目间插入换行符来转化为字 169 | 符串。 170 | 171 | *perl-SetHeight* 172 | Window->SetHeight({height}) 173 | 把窗口的高度设定为 {height},不超过屏幕范围。 174 | 175 | *perl-GetCursor* 176 | Window->Cursor({row}?, {col}?) 177 | 在没有参数的情况下,返回窗口光标所处位置的坐标 (row, 178 | col) 数组。当有参数 {row} 和 {col} 的情况下,把窗口光 179 | 标的位置设为 {row} 和 {col}。注意 {col} 是按 Perl 风格 180 | 从0 数起的,比 Vim 的尺度小 1。 181 | 182 | Window->Buffer() *perl-Buffer* 183 | 返回给定窗口的缓冲区对象。 184 | 185 | *perl-Name* 186 | Buffer->Name() 返回缓冲区的文件名。 187 | 188 | *perl-Number* 189 | Buffer->Number() 返回缓冲区的编号。 190 | 191 | *perl-Count* 192 | Buffer->Count() 返回缓冲区中的行数。 193 | 194 | *perl-Get* 195 | Buffer->Get({lnum}, {lnum}?, ...) 196 | 对每个指定的 {lnum},返回缓冲区中第 {lnum} 行的文本字 197 | 符串。通过指定一个 {lnum} 列表可以传递一个数组。 198 | 199 | *perl-Delete* 200 | Buffer->Delete({lnum}, {lnum}?) 201 | 删除缓冲区的第 {lnum} 行。当有第二个参数 {lnum} 时,删 202 | 除由第一个 {lnum} 到第二个 {lnum} 指定的范围。 203 | 204 | *perl-Append* 205 | Buffer->Append({lnum}, {line}, {line}?, ...) 206 | 把每个 {line} 字符串添加到缓冲区的第 {lnum} 行后面。 207 | {line} 列表可以是一个数组。 208 | 209 | *perl-Set* 210 | Buffer->Set({lnum}, {line}, {line}?, ...) 211 | 替代缓冲区从第 {lnum} 行开始,由 {line} 指定的一行或者 212 | 多行。 {line} 列表可以是一个数组。如果参数无效,就不作 213 | 替代。 214 | $main::curwin 215 | 当前窗口对象。 216 | $main::curbuf 217 | 当前缓冲区对象。 218 | 219 | *script-here* 220 | 当使用嵌入式脚本语言时,你可能想在语言不支持时跳过这些语言的代码。但是以下机制 221 | 不能工作: > 222 | if has('perl') 223 | perl << EOF 224 | this will NOT work! 225 | EOF 226 | endif 227 | 相反,应把 Perl / Python / Ruby 等的命令放在一个函数里面并调用它: > 228 | if has('perl') 229 | function DefPerl() 230 | perl << EOF 231 | this works 232 | EOF 233 | endfunction 234 | call DefPerl() 235 | endif 236 | 备注: "EOF" 必须在行首 (前面不能有前导空格)。 237 | 238 | ============================================================================== 239 | 4. 动态调入 *perl-dynamic* 240 | 241 | MS-Windows 上,可以动态调入 Perl 库。|:version| 输出这时应包括 |+perl/dyn|。 242 | 243 | 这意味着 Vim 只有在必要时才寻找 Perl DLL 文件。如果不使用 Perl 接口,你就不需 244 | 要它。这样,即使没有该 DLL 文件,你也可使用 Vim。 245 | 246 | 要使用 Perl 接口,Perl DLL 必须在搜索路径上。控制台窗口里输入 "path" 可以看到 247 | (搜索路径) 当前使用的目录。 248 | 249 | DLL 的名字必须匹配 Vim 编译时所使用的 Perl 版本。目前,该名字为 "perl58.dll", 250 | 也就是 Perl 5.8。要确信这一点,编辑 "gvim.exe" 文件并查找 "perl\d*.dll\c"。 251 | 252 | ============================================================================== 253 | vim:tw=78:ts=8:ft=help:norl: 254 | -------------------------------------------------------------------------------- /doc/if_ruby.cnx: -------------------------------------------------------------------------------- 1 | *if_ruby.txt* For Vim version 7.2. 最近更新: 2006年7月 2 | 3 | 4 | VIM 参考手册 by Shugo Maeda 5 | 译者: Willis, tocer 6 | http://vimcdoc.sf.net 7 | 8 | Vim 的 Ruby 接口 *ruby* *Ruby* 9 | 10 | 11 | 1. 命令 |ruby-commands| 12 | 2. VIM 模块 |ruby-vim| 13 | 3. VIM::Buffer 对象 |ruby-buffer| 14 | 4. VIM::Window 对象 |ruby-window| 15 | 5. 全局变量 |ruby-globals| 16 | 6. 动态调入 |ruby-dynamic| 17 | 18 | {Vi 无此功能} 19 | *E266* *E267* *E268* *E269* *E270* *E271* *E272* *E273* 20 | 21 | 只有编译 Vim 时加入 |+ruby| 特性才会有 Ruby 接口功能。 22 | 23 | ruby 的主页是 http://www.ruby-lang.org/。你可以在那里找到 Ruby 下载的链接。 24 | 25 | ============================================================================== 26 | 1. 命令 *ruby-commands* 27 | 28 | *:ruby* *:rub* 29 | :rub[y] {cmd} 执行 Ruby 命令 {cmd}。 30 | 31 | :rub[y] << {endpattern} 32 | {script} 33 | {endpattern} 34 | 执行 Ruby 脚本 {script}。 35 | {endpattern} _不能_有前导空白。如果 {endpattern} 省 36 | 略,缺省为单个句号 '.',类似于 |:append| 和 |:insert| 37 | 命令。这种形式的 |:ruby| 命令主要用于在 vim 脚本里包含 38 | ruby 代码。 39 | 注意: 如果编译时没有加入 Ruby 特性,这个命令不会工作。 40 | 为了避免错误,参看 |script-here|。 41 | 42 | 示例 Vim 脚本: > 43 | 44 | function! RedGem() 45 | ruby << EOF 46 | class Garnet 47 | def initialize(s) 48 | @buffer = VIM::Buffer.current 49 | vimputs(s) 50 | end 51 | def vimputs(s) 52 | @buffer.append(@buffer.count,s) 53 | end 54 | end 55 | gem = Garnet.new("pretty") 56 | EOF 57 | endfunction 58 | < 59 | 60 | *:rubydo* *:rubyd* *E265* 61 | :[range]rubyd[o] {cmd} 在 [range] 界定的每行上分别执行 Ruby 命令 {cmd},执行 62 | 时,$_ 设为相应的行文本,不含结尾的 。修改 $_ 就 63 | 会修改相应的行,不过要 注意: 此命令不能用来增加或者删 64 | 除行。 65 | 缺省的 [range] 是整个文件: "1,$"。 66 | 67 | *:rubyfile* *:rubyf* 68 | :rubyf[ile] {file} 执行 Ruby 脚本文件 {file}。这和 ":ruby load 'file'" 相 69 | 当,但可用文件名自动补全功能。 70 | 71 | 72 | |sandbox| 里不能执行 Ruby 命令。 73 | 74 | ============================================================================== 75 | 2. VIM 模块 *ruby-vim* 76 | 77 | Ruby 代码通过 "VIM" 模块调用所有的 vim 功能。 78 | 79 | 概述 > 80 | print "Hello" # 显示消息 81 | VIM.command(cmd) # 执行 ex 命令 82 | num = VIM::Window.count # 得到窗口行数 83 | w = VIM::Window[n] # 得到第 "n" 个窗口 84 | cw = VIM::Window.current # 得到当前窗口 85 | num = VIM::Buffer.count # 得到缓冲区的个数 86 | b = VIM::Buffer[n] # 得到第 "n" 个缓冲区 87 | cb = VIM::Buffer.current # 得到当前缓冲区 88 | w.height = lines # 设置窗口高度 89 | w.cursor = [row, col] # 设置窗口里的光标位置 90 | pos = w.cursor # 得到数组 [行, 列] 91 | name = b.name # 得到缓冲区的文件名 92 | line = b[n] # 得到缓冲区的某一行 93 | num = b.count # 得到总的行数 94 | b[n] = str # 设置缓冲区的某一行 95 | b.delete(n) # 删除某一行 96 | b.append(n, str) # 在第 n 行后增加一行 97 | line = VIM::Buffer.current.line # 得到当前行 98 | num = VIM::Buffer.current.line_number # 得到当前行号 99 | VIM::Buffer.current.line = "test" # 设置当前行 100 | < 101 | 102 | 模块函数: 103 | 104 | *ruby-message* 105 | VIM::message({msg}) 106 | 显示消息 {msg}。 107 | 108 | *ruby-set_option* 109 | VIM::set_option({arg}) 110 | 设置 vim 选项。{arg} 可以是任何一个 ":set" 命令接受的命令。 注意 这意 111 | 味着参数里不能有空格!参见 |:set|。 112 | 113 | *ruby-command* 114 | VIM::command({cmd}) 115 | 执行 Ex 命令 {cmd}。 116 | 117 | *ruby-evaluate* 118 | VIM::evaluate({expr}) 119 | 用 vim 内部的表达式分析器执行 {expr} (参看 |expression|)。返回字符串 120 | 形式的执行结果。 121 | |List| 通过连接项目并在项目间插入换行符来转化为字符串。 122 | 123 | ============================================================================== 124 | 3. VIM::Buffer 对象 *ruby-buffer* 125 | 126 | VIM::Buffer 对象代表 Vim 缓冲区。 127 | 128 | 类方法: 129 | 130 | current 返回当前缓冲区对象。 131 | count 返回缓冲区的总数。 132 | self[{n}] 返回第 {n} 个缓冲区。首个缓冲区的序号是 0。 133 | 134 | 方法: 135 | 136 | name 返回缓冲区的名字。 137 | number 返回缓冲区的序号。 138 | count 返回总行数。 139 | length 返回总行数。 140 | self[{n}] 从缓冲区中返回一行。{n} 是行号。 141 | self[{n}] = {str} 142 | 设置缓冲区的一行。{n} 是行号。 143 | delete({n}) 删除缓冲区的一行。{n} 是行号。 144 | append({n}, {str}) 145 | 在第 {n} 行后增加一行。 146 | line 如果缓冲区激活,返回缓冲区的当前行。 147 | line = {str} 如果缓冲区激活,设置缓冲区的当前行。 148 | line_number 如果缓冲区激活,返回当前行的行号。 149 | 150 | ============================================================================== 151 | 4. VIM::Window 对象 *ruby-window* 152 | 153 | VIM::Window 对象代表 Vim 窗口。 154 | 155 | 类方法: 156 | 157 | current 返回当前窗口对象。 158 | count 返回窗口的总数。 159 | self[{n}] 返回第 {n} 个窗口。首个窗口的序号是 0。 160 | 161 | 方法: 162 | 163 | buffer 返回显示的缓冲区对象。 164 | height 返回窗口的高度。 165 | height = {n} 设置窗口的高度为 {n}。 166 | width 返回窗口的宽度。 167 | width = {n} 设置窗口的宽度为 {n}。 168 | cursor 返回光标位置数组: [行、列]。 169 | cursor = [{row}, {col}] 170 | 设置光标位置为行 {row} 和列 {col}。 171 | 172 | ============================================================================== 173 | 5. 全局变量 *ruby-globals* 174 | 175 | 有两个全局变量。 176 | 177 | $curwin 当前窗口对象。 178 | $curbuf 当前缓冲区对象。 179 | 180 | ============================================================================== 181 | 6. 动态调入 *ruby-dynamic* 182 | 183 | MS-Windows 上,可以动态调入 Ruby 库。|:version| 输出这时应包括 |+ruby/dyn|。 184 | 185 | 这意味着 Vim 只有在必要时才寻找 Ruby DLL 文件。如果不使用 Ruby 接口,你就不需 186 | 要它。这样,即使没有该 DLL 文件,你也可使用 Vim。 187 | 188 | 要使用 Ruby 接口,Ruby DLL 必须在搜索路径上。控制台窗口里输入 "path" 可以看到 189 | (搜索路径) 当前使用的目录。 190 | 191 | DLL 的名字必须匹配 Vim 编译时所使用的 Ruby 版本。目前,该名字为 "ruby18.dll", 192 | 也就是 Ruby 1.8。要确信这一点,编辑 "gvim.exe" 文件并查找 "ruby\d*.dll\c"。 193 | 194 | ============================================================================== 195 | vim:tw=78:ts=8:ft=help:norl: 196 | -------------------------------------------------------------------------------- /doc/if_sniff.cnx: -------------------------------------------------------------------------------- 1 | *if_sniff.txt* For Vim version 7.2. 最近更新: 2006年2月 2 | 3 | 4 | VIM 参考手册 5 | by Anton Leherbauer (toni@takefive.co.at) 6 | 译者: Willis 7 | http://vimcdoc.sf.net 8 | 9 | 10 | SNiFF+ 和 Vim *sniff* 11 | 12 | 1. 简介 |sniff-intro| 13 | 2. 命令 |sniff-commands| 14 | 3. 编译 VIM 时加入 SNiFF+ 接口 |sniff-compiling| 15 | 16 | {Vi 没有任何一项以上的功能} *E275* *E274* *E276* *E278* *E279* 17 | 18 | SNiFF+ 接口只有在 Vim 编译时加入 |+sniff| 特性才能使用。 19 | 20 | ============================================================================== 21 | 1. 简介 *sniff-intro* 22 | 23 | 以下使用 SNiFF+ 的功能可用: 24 | 25 | * Vim 能被用来应答所有的编辑请求。 26 | * 当 Vim 保存一个文件时,SNiFF+ 识别和更新所有浏览器 27 | * Vim 中可以直接调用 SNiFF+ 命令 28 | 29 | 如何和 SNiFF+ 一起使用 VIM 30 | 1. 确保 SNiFF+ 已经在运行。 31 | 2. 在属性对话框的编辑器视图中设置 'External Editor' 字段为 'Emacs/Vim'。 32 | 3. 启动 Vim 33 | 4. 连接到 SNiFF+ (:sniff connect) 34 | 35 | 一旦连接建立,SNiFF+ 调用 Vim 来执行所有的显示和编辑源代码的请求。另一方面,你 36 | 也可以用 :sniff 命令对 SNiFF+ 发出查询。 37 | 38 | ============================================================================== 39 | 2. 命令 *sniff-commands* 40 | 41 | *:sniff* *:sni* 42 | :sni[ff] request [symbol] 给 sniff 发送请求 request 和带一个可选的参数 43 | symbol。 {Vi 无此功能} 44 | :sni[ff] 显示所有可能的请求和连接状态 45 | 46 | 很多请求需要一个 symbol (标识符) 作为参数。如果省略,Vim 会使用当前光标下的单 47 | 词。可用的请求包括: 48 | 49 | 请求 对应 描述 50 | ------------------------------------------------------------------------------- 51 | connect sc 和 SNiFF+ 建立连接。 52 | 确保 SNiFF+ 已经做了相应的属性设置。 53 | disconnect sq 和 SNiFF+ 断开连接。用命令 :sniff connect 54 | (或者 'sc' ),你在任何时候可以重新连接。 55 | toggle st 在实现和定义文件间切换 56 | find-symbol sf 在符号浏览器中调入 symbol 57 | browse-class sb 在类浏览器中调入类 symbol 58 | superclass ss 编辑 symbol 的超类 59 | overridden so 编辑 symbol 的被重写的方法 60 | retrieve-file srf 检取当前文件中的 symbol 61 | retrieve-project srp 检取当前项目中的 symbol 62 | retrieve-all-projects srP 检取所有项目中的 symbol 63 | retrieve-next sR 用当前检取器的设置检取下一个 symbol 64 | goto-symbol sg 转到 symbol 的定义或者实现 65 | hierarchy sh 在层次浏览器上调入 symbol 66 | restr-hier sH 同上,但只显示相关的类 67 | xref-to sxt 启动一个针对 symbol 的引用查询,并把结果调入 68 | 交叉引用器 69 | xref-by sxb 启动一个针对 symbol 的被引用查询 70 | xref-has sxh 启动一个针对 symbol 的引用组件查询 71 | xref-used-by sxu 启动一个针对 symbol 的被引用组件查询 72 | show-docu sd 显示 symbol 的文档 73 | gen-docu sD 产生 symbol 的文档 74 | 75 | 对应表在文件 'sniff.vim' 中定义,这个文件是所有 SNiFF+ 产品的一个组成部分 76 | ($SNIFF_DIR/config/sniff.vim)。它会在 Vim 连接到 SNiFF+ 时被执行。 77 | 78 | ============================================================================== 79 | 3. 编译 VIM 时加入 SNiFF+ 接口 *sniff-compiling* 80 | 81 | 要在编译 Vim 是加入 SNiFF+ 支持,你需要两个额外的源文件: if_sniff.c 和 82 | if_sniff.h。 83 | 在 Unix 上: 编辑 Makefile,去掉注释行 "--enable-sniff"。或者手动执行 84 | configure,在命令行里加入该参数。 85 | 在 NT 上: 在 make 命令执行时加上 SNIFF=yes。 86 | 87 | vim:tw=78:ts=8:ft=help:norl: 88 | -------------------------------------------------------------------------------- /doc/mlang.cnx: -------------------------------------------------------------------------------- 1 | *mlang.txt* For Vim version 7.2. 最近更新:2008年6月 2 | 3 | 4 | VIM REFERENCE MANUAL by Bram Moolenaar 5 | 译者: jwdu ,iCrazy 6 | http://vimcdoc.sf.net 7 | 8 | 9 | 多语言特性 *multilang* *multi-lang* 10 | 11 | 这里讲的是使用各种不同语言的信息和菜单。如果希望编辑多字节文本请参看 12 | |multibyte|。 13 | 14 | 基本的使用请参看用户手册 |usr_45.txt|。 15 | 16 | 1. 信息 |multilang-messages| 17 | 2. 菜单 |multilang-menus| 18 | 3. 脚本 |multilang-scripts| 19 | 20 | 同时请参看 |help-translated| 阅读有关多语言帮助使用。 21 | 22 | {Vi 没有以上的功能} 23 | {仅当编译时加入 |+multi_lang| 特性才有效} 24 | 25 | ============================================================================== 26 | 1. 信息 *multilang-messages* 27 | 28 | Vim 从环境变量中获取当前 locale 信息。这意味着在大部分的情形下,Vim 将使用你喜 29 | 欢的语言,除非这种语言不存在。 30 | 31 | 为了知道你的系统所支持的语言列表,可以查看以下的路径 (针对 Unix): 32 | /usr/lib/locale ~ 33 | /usr/share/locale ~ 34 | 不幸的是,大小写是区分的。同时还要注意 "-" 和 "_" 不要用混了。 35 | 36 | (译者注: Windows 上,简体/繁体中文对应语言是 chinese_china 和 chinese_taiwan, 37 | 它们在内部被翻译为 zh_CN 和 zh_TW。换而言之,可以用 > 38 | :language chinese_china " 不能直接用 zh_CN 39 | 但 > 40 | :echo v:lang 41 | zh_CN 42 | 这一翻译机制目前来自硬编码,因而看来没有 UTF-8 对应形式的支持。) 43 | 44 | *:lan* *:lang* *:language* *E197* 45 | :lan[guage] 46 | :lan[guage] mes[sages] 47 | :lan[guage] cty[pe] 48 | :lan[guage] tim[e] 49 | 显示当前的语言 (即 locale)。 50 | 使用 "messages" 参数会显示出用作消息的语言。术语: 51 | LC_MESSAGES。 52 | 使用 "ctype" 参数,会显示出用作字符编码的语言。术语: 53 | LC_CTYPE。 54 | 使用 "time" 参数会显示出用作 strftime() 的语言。术语: 55 | LC_TIME。 56 | 不加参数时显示当地语言的全称 (这个功能依赖于系统)。 57 | 当前的语言同样也可以通过变量 |v:lang|、|v:ctype| 和 58 | |v:lc_time| 来获得。 59 | 60 | :lan[guage] {name} 61 | :lan[guage] mes[sages] {name} 62 | :lan[guage] cty[pe] {name} 63 | :lan[guage] tim[e] {name} 64 | 把当前的语言 (即 locale) 设置成 {name}。 65 | 此处的 {name} 必须是你系统上的一个有效的语言。一些系统 66 | 接受像 "en" 或 "en_US" 这样的别名,但是,一些系统只接 67 | 受像 "en_US.ISO_8859-1" 这样完整的名称。 68 | 借助于参数 "messages",你就可以设置消息使用的语言。如 69 | 果你希望的话,这两者可以不同,例如:当你编辑日文文本时 70 | 使用英文消息。它设置 $LC_MESSAGES。 71 | 借助于参数 "ctype",你就可以设置用作字符编码的语言。这 72 | 将会影响到 Vim 所连接的库。一般不能将它和 'encoding' 73 | 设成不同的值。它设置 $LC_CTYPE。 74 | 借助于参数 "time" 参数,你就可以设置用作时间和日期消息 75 | 的语言。它影响到 strftime()。它设置 $LC_TIME。 76 | 没有参数时,以上两者都会被设置,另外还会设置 $LANG。 77 | 编译时加上 |+float| 特性时,LC_NUMERIC 值总会被设为 78 | "C",以便浮点数使用 '.' 作为十进制小数点。 79 | 这将会使那些依赖语言的项目 (信息,时间和日期的格式) 看 80 | 起来有一些不同。这不是所有系统都完全支持的。 81 | 如果设置失败,将会返回一个出错信息。如果设置成功,将不 82 | 会有任何信息。例如: > 83 | :language 84 | Current language: C 85 | :language de_DE.ISO_8859-1 86 | :language mes 87 | Current messages language: de_DE.ISO_8859-1 88 | :lang mes en 89 | < 90 | 91 | MS-WINDOWS 信 息 的 翻 译 *win32-gettext* 92 | 93 | 如果你用了自安装的 .exe 文件,应该不需要什么设置。否则你可能找不到 94 | libintl.dll 文件。可以从下面的网站得到它: 95 | 96 | http://sourceforge.net/projects/gettext 97 | 98 | 这里还包含了 xgettext,msgformat 以及其它工具。 99 | 100 | libintl.dll 应该和 (g)vim.exe 放在同一个目录内,或者放在环境变量 PATH 指定的那 101 | 些目录里。消息数据文件 (vim.mo) 应放在 "$VIMRUNTIME/lang/xx/LC_MESSAGES",在这 102 | 里 "xx" 是语言的缩写 (大部分是两个字母)。 103 | 104 | 如果你制作了自己的翻译,那么,你需要生成 .po 文件并把它转化为 .mo 文件。同时, 105 | 找到 Vim 的源代码并阅读 "src/po/README.txt" 文件。 106 | 107 | 如果你不想使用自动选择的语言,那么就把 $LANG 变量设为你希望的语言。如果你不希 108 | 望使用语言翻译,请设置成 "en"。 > 109 | 110 | :let $LANG = 'ja' 111 | 112 | (Windows 的文本由 Muraoka Taro 完成) 113 | 114 | ============================================================================== 115 | 2. 菜单 *multilang-menus* 116 | 117 | 基本的使用请参看 |45.2|,尤其是 'langmenu' 的使用部分。 118 | 119 | 注意 如果在翻译后对菜单作了更改,菜单的一些选项可能会显示成英文。请联系翻译的 120 | 维护者并请求他更新菜单的翻译。你可以在 "$VIMRUNTIME/lang/menu_.vim" 中找 121 | 到翻译者的名字和 e-mail 地址。 122 | 123 | 为菜单设定字体 (或字体集),请用 |:highlight| 命令。例如: > 124 | 125 | :highlight Menu font=k12,r12 126 | 127 | 128 | LOCALE 的 别 名 129 | 130 | 不幸的是,即使使用相同的语言和编码,不同系统上的当地语言名称也可能是不同的。如 131 | 果你没有得到你需要的菜单翻译,请检查下面命令的输出: > 132 | 133 | echo v:lang 134 | 135 | 现在,检查 "$VIMRUNTIME/lang" 目录中有没有使用相似语言的翻译文件。注意 符号 136 | "-" 和 "_" 的区别,它可能是找不到文件的罪魁祸首!另外一个通常要注意的差别是 137 | "iso8859-1" 和 "iso_8859-1"。所幸的是,Vim 把所有的名字都转换成小写了。因此, 138 | 你没有必要担心大小写的差别。为了避免空格被忘掉,它们被转化成下划线。 139 | 140 | 如果你发现了一个不同文件名的菜单翻译,你可以在自己的 runtime 目录下建立一个文 141 | 件并装载之。这个文件的名字可以是: > 142 | 143 | ~/.vim/lang/menu_.vim 144 | 145 | 检查 'runtimepath' 选项以确定会搜索哪些目录。在此文件中写一个命令来装载那个使 146 | 用不同名字的菜单文件: > 147 | 148 | runtime lang/menu_.vim 149 | 150 | 151 | 翻 译 菜 单 152 | 153 | 如果你想自己翻译菜单,你可以使用 |:menutrans| 命令,下面有一些说明。推荐把每种 154 | 语言的翻译放到单独的 Vim 脚本文件中。如果一种语言还没有被翻译,你可以成为它的 155 | 维护者,并把你的翻译贡献出来,以便能让其它 Vim 用户使用。如果你要这样的意愿的 156 | 话,请发 e-mail 给 Vim 的维护者:。 157 | 158 | *:menut* *:menutrans* *:menutranslate* 159 | :menut[ranslate] clear 160 | 清除所有的菜单翻译。 161 | 162 | :menut[ranslate] {english} {mylang} 163 | 将菜单名称 {english} 翻译成 {mylang}。像 "&" 和 164 | "" 这样的特殊字符也必须包括进去。如同其它 |:menu| 165 | 命令中的那样,空格和句点需要用反斜杠来转义。 166 | 167 | 你可以在 $VIMRUNTIME/lang 目录中找到例子。 168 | 169 | 为了检验你的翻译,首先你需要清除所有的菜单。用下面的方法你可以不重新启动 Vim 170 | 就达到这样的效果: > 171 | :source $VIMRUNTIME/delmenu.vim 172 | :source 173 | :source $VIMRUNTIME/menu.vim 174 | 175 | 菜单路径的每一个部分是被独立的翻译的。这就意味着:如果 "Help" 被翻译成 176 | "帮助", "Overview" 被翻译成 "总览",那么 "Help.Overview" 就会被翻译成 177 | "帮助.总览"。 178 | 179 | ============================================================================== 180 | 3. 脚本 *multilang-scripts* 181 | 182 | 在 Vim 脚本中,你可以用 |v:lang| 变量获得当前的 locale。缺省值是 "C" 或者来自 183 | 于环境变量 $LANG。 184 | 185 | 以下这个例子展示了这个变量的一个简单的应用,它可以显示出针对用户喜好语言的信 186 | 息: > 187 | 188 | :if v:lang =~ "zh_CN" 189 | : echo "早上好" 190 | :else 191 | : echo "Good morning" 192 | :endif 193 | < 194 | 195 | vim:tw=78:sw=4:ts=8:ft=help:norl: 196 | -------------------------------------------------------------------------------- /doc/os_amiga.cnx: -------------------------------------------------------------------------------- 1 | *os_amiga.txt* For Vim version 7.2. 最近更新: 2006年7月 2 | 3 | 4 | VIM 参考手册 by Bram Moolenaar 5 | 译者: Willis 6 | http://vimcdoc.sf.net 7 | 8 | 9 | *Amiga* 10 | 本文档描述了 Vim 的 Amiga 版本的特点。有一节还专门讨论了 |MorphOS|。 11 | 12 | Amiga 上的安装: 13 | - Vim "doc" 目录赋予 "VIM:"。Vim 会查找 "VIM:doc/help.txt" 文件 (为了 help 命 14 | 令)。设置环境变量 $VIM 也可以。反过来,如果用到 $VIM 但它没有定义,就用 15 | "VIM:"。 16 | - DOS 1.3 或更早的版本: 把 "arp.library" 放在 "libs:" 里。Vim 必须在编译时加入 17 | |+ARP| 特性。确保 newcli 和 run 在 "C:" 里 (为了执行外部命令)。 18 | - 在 "c:" 或者任何在搜索路径的目录里提供一个能接受带 "-c" 的命令的外壳程序 (例 19 | 如,Fish disk 624 的 "Csh") (为了执行外部命令)。 20 | 21 | 如果你有足够内存,你可以使 Vim 和 csh 驻留来避免启动延迟。方法是执行命令 22 | "rez csh vim"。你要把 "rezlib.library" 放在你的 "libs:" 目录。在 2.0 下你需要 23 | rez 0.5 版本。 24 | 25 | 如果你不用二合字母 (digraphs),去掉 |+digraphs| 特性并重新编译可以减少一些内存 26 | 占用。如果你要在其它终端下使用 Vim,可以在重新编译时加上 TERMCAP 选项。Vim 在 27 | Manx 5.x 和 SAS 6.x 下能编译通过。见 makefiles 和 feature.h。 28 | 29 | 如果你发现当打开语法高亮或者使用嵌套的通配符搜索时,Vim 在某些文件上崩溃,那可 30 | 能是由于堆栈太小。试着增加堆栈大小。在命令行上,启动 Vim 之前,使用 Stack 命 31 | 令。而在 Workbench 上,选择 Vim 图标,打开 workbench 的 "Info" 菜单,然后改变 32 | 表单里的 Stack 字段。 33 | 34 | 如果你想要另外的颜色,设置如下的 termcap 代码: 35 | t_mr (反白文本) 36 | t_md (粗体文本) 37 | t_me (t_mr 和 t_md 后的正常文本) 38 | t_so (突出模式的文本) 39 | t_se (t_so 后的正常文本) 40 | t_us (加下划线的文本) 41 | t_ue (t_us 后的正常文本) 42 | t_ZH (斜体文本) 43 | t_ZR (t_ZH 后的正常文本) 44 | 45 | 可以使用标准 ANSI 的转换序列。这些代码是: 46 | 30 灰字 40 灰底 >0 灰色背景 0 关闭所有的属性 47 | 31 黑字 41 黑底 >1 黑色背景 1 粗体 48 | 32 白字 42 白底 >2 白色背景 2 变淡 49 | 33 蓝字 43 蓝底 >3 蓝色背景 3 斜体 50 | 34 灰字 44 灰底 >4 灰色背景 4 下划线 51 | 35 黑字 45 黑底 >5 黑色背景 7 反白 52 | 36 白字 46 白底 >6 白色背景 8 不可见 53 | 37 蓝字 47 蓝底 >7 蓝色背景 54 | 55 | 带 '>' 的代码必须在最后。底色和背景颜色应该一致。这些代码可以一起用,只要用分 56 | 号分开。例如,要在蓝色背景上显示白色文字: > 57 | :set t_me=^V[0;32;43;>3m 58 | :set t_se=^V[0;32;43;>3m 59 | :set t_ue=^V[0;32;43;>3m 60 | :set t_ZR=^V[0;32;43;>3m 61 | :set t_md=^V[1;32;43;>3m 62 | :set t_mr=^V[7;32;43;>3m 63 | :set t_so=^V[0;31;43;>3m 64 | :set t_us=^V[4;32;43;>3m 65 | :set t_ZH=^V[3;32;43;>3m 66 | 67 | 如果在一个过滤命令中使用多个命令,例如, > 68 | :r! echo this; echo that 69 | 只有最后一个命令的输出能看到。要补救这一点,你可以把命令组合起来。具体的做法决 70 | 定于你用的外壳程序 (这就是为何 Vim 不能自己这么做)。例如: > 71 | :r! (echo this; echo that) 72 | :r! {echo this; echo that} 73 | 74 | 接受单个文件名的命令允许文件名的空格。不过能接受多个文件的命令就不行了。文件名 75 | 内含的空格必须要用反斜杠来转换。 76 | 77 | ------------------------------------------------------------------------------ 78 | MorphOS 下的 Vim *MorphOS* 79 | 80 | [本节主要由 Ali Akcaagac 负责] 81 | 82 | 关于 MorphOS 版本的最新消息: 83 | http://www.akcaagac.com/index_vim.html 84 | 85 | 86 | 问题 ~ 87 | 88 | 有些问题不是 MorphOS 的,而更多是和 Vim 和 UN*X 有关。在随机存储器里启动 Vim 89 | 时,它抱怨 MorphOS 给出的一个 nag requestor,只要忽略它就行。另一个问题是运行 90 | Vim 时,有些插件会导致一些问题,这些都可以忽略。希望将来有人能够修正这些问题。 91 | 92 | 目前,要不理这些问题,你或者可以运行: > 93 | 94 | vim <要编辑的文件名> 95 | 96 | 或者,如果你想简单运行 Vim 而且还能享受到帮助文件等的助力,最好这么用: > 97 | 98 | vim --noplugins <当然你也可以加文件名> 99 | 100 | 101 | 安装 ~ 102 | 103 | 1) 请将 'VIM' 二进制码复制到 c: 104 | 2) 从以下位置得到 Vim 运行时代码包: 105 | 106 | ftp://ftp.vim.org/pub/vim/amiga/vim62rt.tgz 107 | 108 | 然后把它解压到 MorphOS 安装的 'Apps' 目录。对我而言,这会建立如下的目录结 109 | 构: 110 | 111 | MorphOS:Apps/Vim/Vim62/... 112 | 113 | 3) (非常重要的是) 把下面代码加到你的 s:shell-startup。 > 114 | 115 | ;Begin VIM 116 | Set VIM=MorphOS:Apps/Vim/Vim62 117 | Assign HOME: "" 118 | ;End VIM 119 | 120 | 4) 把 '.vimrc' 文件复制到 s: 121 | 122 | 5) 在这个包里还有一个叫做 'color-sequence' 的文件。它会将 MorphOS 外壳设成能显 123 | 示 ANSI 颜色。请将该文件复制到 s: 并且修改 s:shell-startup 成: > 124 | 125 | ;Begin VIM 126 | Set VIM=MorphOS:Apps/Vim/Vim62 127 | Assign HOME: "" 128 | Execute S:Color-Sequence 129 | Cls 130 | ;End VIM 131 | 132 | < 133 | vim:tw=78:ts=8:ft=help:norl: 134 | -------------------------------------------------------------------------------- /doc/os_mac.cnx: -------------------------------------------------------------------------------- 1 | *os_mac.txt* For Vim version 7.2. 最近更新: 2006年7月 2 | 3 | 4 | Vim 参考手册 作者:Bram Moolenaar 5 | 译者: iCrazy, Willis,tocer 6 | http://vimcdoc.sf.net 7 | 8 | 9 | *mac* *Mac* *macintosh* *Macintosh* 10 | 11 | 本文件阐述 Vim 的 Macintonsh 版本的特性。 12 | 13 | 注意: 本文档已经略有过时。在这里你可以找到更多有用的信息: 14 | http://macvim.org 15 | 16 | 1. 文件名约定 |mac-filename| 17 | 2. .vimrc 和 .vim 文件 |mac-vimfile| 18 | 3. FAQ |mac-faq| 19 | 4. 已知的不足之处 |mac-lack| 20 | 5. Mac 错误报告 |mac-bug| 21 | 6. 编译 Vim |mac-compile| 22 | 23 | Vim 的 3.0 版有一个移植到 Mac 的版本。这是当时文档中开始的几句话: 24 | 25 | VIM Release Notes 26 | Initial Macintosh release, VIM version 3.0 27 | 19 October 1994 28 | 29 | Eric Fischer 30 | , , 31 | 5759 N. Guilford Ave 32 | Indianapolis IN 46220 USA 33 | 34 | ============================================================================== 35 | 1. 文件名约定 *mac-filename* 36 | 37 | 从 Vim 版本 7 开始,你只能用 unix 的路径分隔符。为了确定指定的文件名是与当前目 38 | 录相关 (相对路径),还是绝对路径 (即:和 "桌面" 相关),我们使用了如下的算法: 39 | 40 | 如果路径以 "/" 开始,则为绝对路径 41 | 如果路径以 ":" 开始,则为相对路径 42 | 如果路径不以 "/" 和 ":" 开始,但是 ":" 在 "/" 之前出现,则为绝对路径 43 | > 44 | :e /HD/text 45 | :e HD:text 46 | < 编辑磁盘 "HD" 中的文件 "text" > 47 | :e :src:main.c 48 | :e src/main.c 49 | < 编辑当前目录下子目录 "src" 中的文件 "main.c" > 50 | :e os_mac.c 51 | < 编辑当前目录下的文件 "os_mac.c"。 52 | 53 | 您可以使用变量 |$VIM| 和 |$VIMRUNTIME| > 54 | 55 | :so $VIMRUNTIME:syntax:syntax.vim 56 | 57 | ============================================================================== 58 | 2. .vimrc 和 .vim 文件 *mac-vimfile* 59 | 60 | 对于 Vim 脚本,建议使用 Unix 风格的换行符,也就是单个 NL 字符。 61 | 62 | 当 Vim 启动时,它会载入 $VIMRUNTIME/macmap.vim 脚本以定义默认的命令键 63 | (command-key) 映射。 64 | 65 | 在旧版系统上,一般应避免使用以 "." 开头的文件,所以那些 rc 文件被命名为 66 | "vimrc" 或 "_vimrc",以及 "gvimrc" 或 "_gvimrc"。这些文件可以是任何格式 (mac、 67 | dos 或 unix)。如果 |'nocompatible'| 选项打开,Vim 可以处理任何文件格式,否则它 68 | 只能处理 mac 格式的文件。 69 | 70 | ============================================================================== 71 | 3. Mac FAQ *mac-faq* 72 | 73 | 在互联网上: http://macvim.org/OSX/index.php#FAQ 74 | 75 | 问题: 我不能在 Apple 终端输入非 ASCII 的字符。 76 | 回答: 在 Windows Setting,Emulation,确信没有选上 "Escape non-ASCII 77 | characters"。 78 | 79 | 问题: 怎么从命令行启动 GUI? 80 | 回答: 假设 Vim.app 存放在 /Applications 中: 81 | open /Applications/Vim.app 82 | 或: 83 | /Applications/Vim.app/Contents/MacOS/Vim -g {arguments} 84 | 85 | 问题: 如果我用 GUI 或 open 启动 Vim.app,如何合理设置 $PATH? 86 | 回答: 下面这个窍门能用于多数 shell。把它放到 vimrc 文件中。macvim.org 发布的二 87 | 进制发行包中带有的系统 vimrc 文件已经包含。 > 88 | let s:path = system("echo echo VIMPATH'${PATH}' | $SHELL -l") 89 | let $PATH = matchstr(s:path, 'VIMPATH\zs.\{-}\ze\n') 90 | 91 | ============================================================================== 92 | 4. 已知的不足之处 *mac-lack* 93 | 94 | 在终端中,CTRL-^ 需要用 Shift-Control-6 来输入。而 CTRL-@ 则用 Shift-Control-2 95 | 输入。 96 | 97 | ============================================================================== 98 | 5. Mac 错误报告 *mac-bug* 99 | 100 | 当报告任何与 Mac 平台相关的 bug 或特性时,请使用 vim-mac 邮件列表 |vim-mac|。 101 | 然而,您必须先订阅它。另一个办法就是发邮件给当前的 MacVim 维护者: 102 | 103 | mac@vim.org 104 | 105 | ============================================================================== 106 | 6. 编译 Vim *mac-compile* 107 | 108 | 见伴随源程序的文件 "src/INSTALLmac.txt"。 109 | 110 | vim:tw=78:ts=8:ft=help:norl: 111 | -------------------------------------------------------------------------------- /doc/os_mint.cnx: -------------------------------------------------------------------------------- 1 | *os_mint.txt* For Vim version 7.2. 最近更新: 2005年3月 2 | 3 | 4 | Vim 参考手册 作者:Jens M.Felderhoff 5 | 译者: iCrazy http://vimcdoc.sf.net 6 | 7 | *MiNT* *Atari* 8 | 本文包含了 Atari MiNT 的 Vim 版本的特性。 9 | 10 | 如果您要为运行 MiNT 的 Atari 机器编译 Vim,您需要首先看一下 src 目录下的 11 | "INSTALL" 和 "Makefile" 目录。 12 | 13 | Vim MiNT 版本的行为和它的 Unix 版本几乎是一样的。 14 | 如果没有明确声明,文档描述的 Unix 上 Vim 的行为也适用于 MiNT 上的 Vim 版本。 15 | 16 | 为了通配符 <~> (主目录) 的扩展,你需要一个支持波浪符扩展的 shell。原始的 17 | Bourne Shell 不能识别,而 "csh" 和 "ksh" 都没问题。 18 | 19 | Vim 的 MINT 版本需要支持你的终端的终端能力的 termcap 文件 /etc/termcap。内建的 20 | termcap 支持 vt52 终端。而支持 TOSWIN 窗口管理器和虚拟控制台终端的 termcap 入 21 | 口项已经被附加到该 termcap 文件中,并随着 Vim 一起发布。 22 | 23 | 万一您遇到了 键被互换的问题,请看 |:fixdel|。 24 | 25 | MiNT 上的终端刷新常常比较慢 (比如串行终端),所以默认情况下的 'showcmd' 选项和 26 | 'ruler' 选项都是关闭的。如果你所使用的终端比较快的话,可以把它们打开。甚至可以 27 | 试试 'ttyfast' 选项。 28 | 29 | 如果您发现了错误,请发送报告至 30 | 31 | Jens M. Felderhoff,电邮: 32 | 33 | vim:tw=78:ts=8:ft=help:norl: 34 | -------------------------------------------------------------------------------- /doc/os_os2.cnx: -------------------------------------------------------------------------------- 1 | *os_os2.txt* For Vim version 7.2. 最近更新: 2006年7月 2 | 3 | 4 | VIM 参考手册 by Paul Slootman 5 | 译者: Willis 6 | http://vimcdoc.sf.net 7 | 8 | 9 | *os2* *OS2* *OS/2* 10 | 本文讨论 OS/2 版本的 Vim 的特点。 11 | 目前,还没有直接基于 PM 的 Vim GUI 版本,也即: OS/2 版本只有控制台界面的。不 12 | 过,现在有了一个 Win32s-兼容的 GUI 版本,这是由 Warp 4 (支持 Win32s) 的拥有者 13 | 们在 Win-OS/2 会话中实现的。本文所记录的,则完全是针对直接的控制台版本而言的。 14 | 15 | 注意 16 | 17 | 这个 OS/2 的移植版本对我和其他的一些 OS/2 用户来说都没有问题。不过,因为我还没 18 | 有得到足够多的反馈,所以既有可能确实没有 (OS/2 专门的) 漏洞存在 (除了以下提到 19 | 的那些以外),也有可能只是没有人有机会创造一个存在漏洞的环境而已。在 Dos 和 20 | Unix 模式下的文件读写、二进制、还有 FAT 处理看起来都工作正常,而这些是最有可能 21 | 出问题的地方。 22 | 23 | 一个已知的问题是 Vim 打开的文件被从 Vim 的外壳转换技术执行的其他程序所继承。 24 | 尤其,这会使得 Vim 无法删除与外部程序同时打开的缓冲区的交换文件,直到外部程序 25 | 结束为止。那时,交换文件是可以删除了,但是如果 Vim 一开始没法做的话,那就不可 26 | 能再去做了。因而,你会在重新启动 Vim 编辑同一个文件时得到警告说别的 Vim 会话正 27 | 在编辑同一个文件。比如,执行 "!start epm"。退出 Vim,重新启动 Vim,打开上次 28 | epm 启动的时候缓冲区里的那个文件,就会看到了这个问题。我正在克服这一问题! 29 | 30 | 第二个问题,是在通过网络访问 OS/2 系统时,Vim 不了解这一情形。比如,在一个 31 | Unix系统下用 telnet 访问,打开 Vim。看起来,这个问题是因为 OS/2 _有时_ 会识别 32 | 功能/光标键,并试图把它们转换成 "正常" 的 PC 键盘产生的 OS/2 的相应代码。我在 33 | 测试一个解决方法 (把 OS/2 代码还原成正确的功能键),但目前我还不能仓促地给出明 34 | 确的结论 (顺便提一下,我在 Warp 3 上工作)。同时,十分欢迎你们的任何帮助。 35 | 36 | 预 备 条 件 37 | 38 | 要执行 Vim,你需要 emx 运行环境 (至少 rev. 0.9b)。这可以如下得到 (可以询问 39 | Archie): 40 | 41 | emxrt.zip emx 运行包 42 | 43 | 我已经附带了一个 emx.dll,它应该复制到你的 LIBPATH 里面的一个目录里。Emx 是 44 | GPL的,但 emx.dll 库不是 (要了解这对你意味着什么,读一下 COPYING.EMX)。 45 | 46 | 这个 emx.dll 来自 emxfix04.zip 包。很不幸,这个包有一个问题,哦,我是说有一个 47 | POSIX 的关于 select() 函数的特色。3.27 以前的 Vim 版本在启动的时候 (准确的说, 48 | 是在执行 vimrc 的时候) 会挂起。如果这发生了,多按几次 直到 Vim 开始工 49 | 作为止。下一步,用一个新一点的 Vim 吧! 50 | 51 | 帮 助 和 VIMRC 文 件 52 | 53 | 如果你解压包含 Vim 的压缩包,然后直接在解压完的地方运行 Vim,Vim 应该就能找到 54 | 你的运行时文件和 .vimrc,无需任何设置。 55 | 56 | 如果你把可执行文件和运行时文件分开放,那么你需要设置 VIM 环境变量来定位帮助文 57 | 件和你的 .vimrc 的位置。在 CONFIG.SYS 里放入这一行: > 58 | 59 | SET VIM=c:/local/lib/vim 60 | 61 | 把你的 .vimrc 和其他的 Vim 文件放在这个目录里。把运行时文件也放进来。每个版本 62 | 的 Vim 都有自己的运行时目录,就像这样 "c:/local/lib/vim/vim54"。现在,你的 Vim 63 | 的文件结构应当象这样: 64 | 65 | c:/local/lib/vim/.vimrc 66 | c:/local/lib/vim/vim54/filetype.vim 67 | c:/local/lib/vim/vim54/doc/help.txt 68 | etc. 69 | 70 | 请 注意: .vimrc 可能在把 OS/2 安装在 FAT 文件系统的那些环境里叫做 _vimrc。Vim 71 | 会先查找 .vimrc,如过找不到,再在同一个地方找 _vimrc。.vimrc 或者 _vimrc 的存 72 | 在与否影响 'compatible' 选项的设置,这会有很多意想不到的后果。参见 73 | |'compatible'|。 74 | 75 | 如果你在网络驱动器上运行 OS/2,那么你可以把 Vim 安装在 网络驱动器上 (包括 76 | .vimrc;这被称为 "系统" vimrc 文件),然后还可以用个人的 .vimrc ("用户" vimrc 77 | 文件)。它应该在 HOME 环境变量所指定的目录下。 78 | 79 | 文 件 名 中 的 环 境 变 量 80 | 81 | 在文件名里使用 ~ 相当于使用 HOME 环境变量,所以 ":e ~/textfile" 会编辑 HOME 目 82 | 录下面的 "textfile" 文件。另外,你也可以用别的环境变量,比如,":n $SRC/*.c"。 83 | 84 | HOME 环境变量还用于定位 .viminfo 文件 (参见 |viminfo-file|)。还没有 FAT 文件系 85 | 统下的 .viminfo支持,对不起了。不过,你自己可以加上 -i 启动标志位来设定 (比如, 86 | "vim -i $HOME/_viminfo")。 87 | 88 | 如果 HOME 环境变量没有设置,缺省值是 "C:/"。 89 | 90 | 反 斜 杠 91 | 92 | 是用斜杠 ('/') 还是反斜杠 ('\') 可能是个问题 (更多说明在 |dos-backslash| 里), 93 | 但大部分情况下 Vim 做的是那 "正确的事"。Vim 自己在文件名里用反斜杠,但会很高兴 94 | 地接受键入的正斜杠。(事实上,有时这样更方便!) 95 | 96 | 临 时 文 件 97 | 98 | 临时文件 (对过滤命令有用) 被放在如下列表里第一个存在并且能创建文件的目录中: 99 | $TMP 100 | $TEMP 101 | C:\TMP 102 | C:\TEMP 103 | 当前目录 104 | 105 | 106 | 终 端 设 置 107 | 108 | *os2ansi* 109 | 要在 TERM 环境变量里用 "os2ansi" (或者干脆不要设,因为缺省值就是正确的)。如果 110 | 你因为别的应用的需要把 TERM 设为别的值,你可以在 .vimrc 里把终端类型设为 111 | os2ansi。问题是 OS/2 的 ANSI 模拟限制很多 (比如,它没有插入/删除行)。 112 | 113 | 如果你确实想用别的 TERM 赋值 (比如因为别的程序),确保它的 termcap 入口有正确的 114 | 键盘映射。emx 发布的 termcap.dat 并不一定总会有。以下是你希望的 termcap 入口里 115 | 需要使光标和命名的功能键 (比如 pagedown)工作的一些需要的设置: > 116 | 117 | :ku=\316H:kd=\316P:kl=\316K:kr=\316M:%i=\316t:#4=\316s:\ 118 | :kD=\316S:kI=\316R:kN=\316Q:kP=\316I:kh=\316G:@7=\316O:\ 119 | :k1=\316;:k2=\316<:k3=\316=:k4=\316>:k5=\316?:k6=\316@:\ 120 | :k7=\316A:k8=\316B:k9=\316C:k;=\316D: 121 | 122 | 123 | Paul Slootman 124 | 125 | 126 | 43 行 窗 口 127 | 128 | Stevan Tryon 给出一个关于如果在大窗口里运行 Vim 的建议: 129 | 130 | 当我在一个象 PMMail 那样的 OS/2 WPS 应用里调用 Vim 的时候,它调入缺省的 25-行 131 | 模式。要得到一个更有用的窗口大小,我做好了一个外部编辑命令 "vimbig.cmd",它接 132 | 着调用 "vimbig2.cmd"。有些强来和不太自然了,也许,不过它能用。 133 | 134 | vimbig.cmd: > 135 | @echo off 136 | start "Vi Improved" /f vimbig2.cmd %1 %2 %3 %4 137 | 138 | vimbig2.cmd: > 139 | @echo off 140 | mode 80,43 141 | vim.exe %1 %2 %3 %4 142 | exit 143 | < 144 | 145 | 剪 贴 板 支 持 (Alexander Wagner 提供) 146 | 147 | OS/2 的 Vim 没有对系统剪贴板的直接支持。要允许这样的访问,你需要一个附加的工 148 | 具: 通过一个 vio 应用来访问剪贴板。Stefan Gruendel 的免费软件包 clipbrd.zip 149 | 就可以。你可以从这个地方下载到编译好的可执行码和所有的源代码: 150 | http://www.stellarcom.org/vim/index.html 151 | 152 | 它的安装很简单: 只要把包里的两个可执行程序放到你的 PATH 里面的一个目录,Vim 就 153 | 可以从的你的任何工作目录里访问他们了。 154 | 155 | 要从剪贴板里复制文本到你的 Vim 会话里,可用 :r 命令。只要从 Vim 里如下调用 156 | clipbrd.exe: > 157 | 158 | :r !clipbrd -r 159 | 160 | 要从 Vim 中把文本复制到剪贴板,只要用通常的 vim-方式 标记文本,然后调用: > 161 | 162 | :!clipbrd -w 163 | 164 | 它会把你的选择区复制到 OS/2 的剪贴板里。 165 | 166 | 为了方便应用,你也许想加为这些命令加上映射?比如,用 F11 把剪贴板的内容粘贴到 167 | Vim 里,用 F12 把选择的文本复制到剪贴板去。那你可以: > 168 | 169 | if has("os2") 170 | imap :r !clipbrd -ri 171 | vmap :!clipbrd -w 172 | else 173 | imap "*pi 174 | vmap "*y 175 | endif 176 | 177 | 这样就可以保证只有在 OS/2 下会调用 clipbrd 命令,而其他环境下用内建的机制 (要 178 | 让 Vim 每次都能记住这些,把这几行放到你的 .vimrc 里)。 179 | 180 | vim:tw=78:ts=8:ft=help:norl: 181 | -------------------------------------------------------------------------------- /doc/os_qnx.cnx: -------------------------------------------------------------------------------- 1 | *os_qnx.txt* For Vim version 7.2. 最近更新: 2006年2月 2 | 3 | 4 | VIM 参考手册 by Julian Kinraid 5 | 译者: Willis 6 | http://vimcdoc.sf.net 7 | 8 | 9 | *QNX* *qnx* 10 | 11 | 1. 概述 |qnx-general| 12 | 2. 编译 Vim |qnx-compiling| 13 | 3. 终端支持 |qnx-terminal| 14 | 4. Photon GUI |photon-gui| 15 | 5. Photon 字体 |photon-fonts| 16 | 6. 漏洞和待做的事情 17 | 18 | ============================================================================== 19 | 20 | 1. 概述 *qnx-general* 21 | 22 | QNX 上的 Vim 和其他的 unix 版本行为大致相同。 |os_unix.txt| 23 | 24 | 25 | 2. 编译 Vim *qnx-compiling* 26 | 27 | Vim 可以用通常的 configure/make 方法编译。如果你要编译 X11 的版本,在配置 28 | (configure) 时加入 --with-x 选项。否则,不需要任何参数。或者,加入 29 | --enable-gui=photon 以得到 Photon GUI 的支持。执行 ./configure --help,看看还 30 | 有什么特性你希望打开或者关闭。 31 | 32 | 33 | 3. 终端支持 *qnx-terminal* 34 | 35 | 如果鼠标和剪贴板选项在编译时加入的话 (通常如此),Vim 可以提供 pterm 这两方面的 36 | 支持。 37 | 38 | 影响鼠标设置的选项有 |'mouse'| 和 |'ttymouse'|。在使用鼠标时,如果你按住 39 | shift、ctrl、或是 alt, pterm 自己会处理鼠标事件。它会选择文本,和 Vim 所做的无 40 | 关。 41 | 42 | 如果鼠标可以使用,你按住 Alt-RightMouse (Alt + 鼠标右键) 可以打开 pterm 菜单。 43 | 要关闭 Vim 的鼠标支持,把 mouse 选项置空,即 set mouse= 44 | 45 | 46 | 4. Photon GUI *photon-gui* 47 | 48 | 要启动 Vim 的 GUI 版本,你可以运行 gvim 或者 vim -g。否则运行的是终端版本。更 49 | 多的信息可见 - |gui-x11-start| 50 | 51 | 支持的特性有: 52 | :browse 命令 |:browse| 53 | :confirm 命令 |:confirm| 54 | 光标闪烁 |'guicursor'| 55 | 菜单、弹出式菜单和菜单优先顺序 |:menu| 56 | |popup-menu| 57 | |menu-priority| 58 | 工具栏 |gui-toolbar| 59 | |'toolbar'| 60 | 字体选择工具 (:set guifont=*) |photon-fonts| 61 | 鼠标聚焦 |'mousefocus'| 62 | 鼠标隐藏 |'mousehide'| 63 | 鼠标图标形状 |'mouseshape'| 64 | 剪贴板 |gui-clipboard| 65 | 66 | 还未完成的特性: 67 | 若干国际化支持,包括波斯语和希伯来文字的支持, 68 | 不同的编码,等等。 69 | 70 | 本帮助文件 71 | 72 | 不支持的特性: 73 | 查找和替换窗口 |:promptfind| 74 | 可卸的菜单 75 | 76 | 其他我还没有想及的恕难加入 77 | 78 | 79 | 5. Photon 字体 *photon-fonts* 80 | 81 | 你可以在 gui 中用 guifont 选项设置字体 > 82 | :set guifont=Lucida\ Terminal 83 | < 84 | 该字体须是等宽字体,字体名如有空格,应以 '\' 转义之。缺省字体是 PC Terminal, 8 85 | 号字。用 '*' 作为字体名会打开一个标准的 Photon 字体选择工具,然后你可以从中选 86 | 择一个字体。 87 | 88 | 在字体名后面,你可以附加可选的控制字体大小和风格的选项,设置之间用 ':' 分隔。 89 | 不是所有的字体都支持所有的风格。 90 | 91 | 这些选项是, 92 | s{size} 字体大小 {size} 93 | b 粗体字 94 | a 抗锯齿字体 95 | i 斜体字 96 | 97 | 示例: 98 | 99 | 设定 monospace 10号抗锯齿字体 > 100 | :set guifont=monospace:s10:a 101 | < 102 | 设定 Courier 12号粗体斜体字 > 103 | :set guifont=Courier:s12:b:i 104 | < 105 | 从选择工具挑选字体 > 106 | :set guifont=* 107 | < 108 | 109 | 110 | 6. 漏洞和待做的事情 111 | 112 | 已知问题: 113 | - Vim 有时在执行外部程序时不响应。绕开的方法是把下面这行加入到你的 114 | |vimrc| 文件中: > 115 | set noguipty 116 | 117 | 漏洞: 118 | - 菜单高亮还有些许问题 119 | - 在使用 phiditto/phinows 等的时候,如果你用的字体不支持粗体属性而 Vim 120 | 要显示粗体字,情况就会弄乱。 121 | - 光标有时候很难看得到。 122 | - 一些我可以解决的小问题 :) 123 | 124 | 待做: 125 | - 改进多语言支持。 126 | - 在菜单和工具栏中加入设置字体的选项。 127 | - 查找和替换对话框。 128 | - 客户/服务器方面的功能。 129 | - 也许要做可卸下的菜单。 130 | 131 | - 在启动外部程序时,不要使用带 spawn() 的 fork()。 132 | 133 | vim:tw=78:sw=4:ts=8:ts=8:ft=help:norl: 134 | -------------------------------------------------------------------------------- /doc/os_unix.cnx: -------------------------------------------------------------------------------- 1 | *os_unix.txt* For Vim version 7.2. 最近更新:2005年3月 2 | 3 | 4 | VIM 用户手册 Bram Moolenaar 著 5 | 译者:yemao http://vimcdoc.sf.net 6 | 7 | 8 | *unix* *Unix* 9 | 本文件介绍了 Unix 版本的 vim 的一些特殊之处。 10 | 11 | 首先,要在 Unix 上编译 vim,请参考 src 目录下的 "INSTALL" 文件和 "Makefile" 文 12 | 件。 13 | 14 | 默认帮助文件名为 "/usr/local/lib/vim/help.txt" 15 | 同时,vim 会使用 "$HOME/.vimrc" 和 "$HOME/.exrc" 而不是 "s:.vimrc" 和 16 | "s:.exrc"。另外它会首先使用 /usr/local/etc/vimrc 文件。注意,如果 17 | "/usr/local/share" 已经存在,就会使用它来代替 "/usr/local/lib"。 18 | 19 | 临时文件 (用于过滤程序) 默认会放在 "/tmp" 下,如果你想把它们放在别处,那么必须 20 | 设置环境变量 $TMPDIR 为你放临时文件的目录。 21 | 22 | 通过扩展通配符,你可以使用 '~' (用户主目录) 及 '$' (系统环境变量)。 23 | 24 | *fork* *spoon* 25 | 执行外部命令时,会尽可能调用 fork()/exec(),不然会调用 system()。使用后者速度 26 | 会有所减慢。正因为有两个函数可以被调用,":version" 输出信息就有两种,当调用 27 | fork()/exec() 时,输出 |+fork|,否则输出 |+system|。编译时可以修改。 28 | (GUI 上关于 fork (进程分叉) 的详细信息参考 |gui-fork|。) 29 | 30 | Unix 上的终端刷新常常比较慢 (比如串行终端和 suntools 下的 shell 窗口),所以默 31 | 认情况下的 'showcmd' 选项和 'ruler' 选项都是关闭的。如果你所使用的终端比较快的 32 | 话,可以把它们打开。甚至可以试试 'ttyfast' 选项。 33 | 34 | 在 xterm 下使用 Vim,只要把 'mouse' 选项设成 "a" 就可以使用鼠标了。如果你有权 35 | 限使用 X-server,当你用鼠标拖动的时候,可以进行 gui 风格的复制和粘贴,而你还会 36 | 看到可视反馈。如果你还是想用 xterm 的复制和粘贴,使用鼠标时按住 shift 键,具体 37 | 请参考 |mouse-using|。只要你的 xterm 版本够新,设置一下 'ttymouse' 选项就可以 38 | 在拖动的时候得到可视反馈。 39 | 40 | *terminal-colors* 41 | 要在 Vim 里显示彩色,可以参考以下例子 (假定你的终端支持色彩显示,而 "T_Co" 为 42 | 空或零): > 43 | :set t_me=^[[0;1;36m " 正常模式 (撤销 t_mr 和 t_md) 44 | :set t_mr=^[[0;1;33;44m " 反转 (逆转) 模式 45 | :set t_md=^[[1;33;41m " 粗体模式 46 | :set t_se=^[[1;36;40m " 突出模式结束 47 | :set t_so=^[[1;32;45m " 突出模式开始 48 | :set t_ue=^[[0;1;36m " 下划线模式结束 49 | :set t_us=^[[1;32m " 下划线模式开始 50 | [注意,^[ 是 ,可以用 CTRL-V 来输入。] 51 | 52 | 而在真正的彩色终端下,可以使用 ":highlight" 命令。 53 | 54 | 另外,文件 "tools/vim132" 是一个 shell 脚本。在 vt100 和与其类似的终端下,它可 55 | 以使 Vim 使用 132 列模式。 56 | 57 | vim:tw=78:ts=8:ft=help:norl: 58 | -------------------------------------------------------------------------------- /doc/pi_gzip.cnx: -------------------------------------------------------------------------------- 1 | *pi_gzip.txt* For Vim version 7.2. 最近更新: 2005年3月 2 | 3 | 4 | Vim 参考手册 作者:Bram Moolenaar 5 | 译者: iCrazy http://vimcdoc.sf.net 6 | 7 | 8 | 用 Vim 编辑压缩的文件 *gzip* *bzip2* *compress* 9 | 10 | 1. 自动命令 |gzip-autocmd| 11 | 12 | 这里涉及到的功能是一个 |standard-plugin|。 13 | 这个插件仅在 'compatible' 选项没有被置位的情况下有效。 14 | 您可以通过设置变量 "loaded_gzip" 来避免装载这个插件: 15 | :let loaded_gzip = 1 16 | 17 | {Vi 没有以上的功能} 18 | 19 | ============================================================================== 20 | 1. 自动命令 *gzip-autocmd* 21 | 22 | 这个插件建立自动命令来截获对具有以下扩展名的文件的读写: 23 | 24 | 扩展名 压缩格式 ~ 25 | *.Z compress (Lempel-Ziv) 26 | *.gz gzip 27 | *.bz2 bzip2 28 | 29 | 您仅仅知道这些就已经足够了,此插件没有选项。 30 | 31 | 在解压缩一个文件之后,会自动重新检测文件格式。这样可能会使一个类似 "foo.c.gz" 32 | 的文件具有 "c" 的文件格式。 33 | 34 | 如果您设置了 'patchmode',在进行压缩后该值会被自动加到文件的扩展名后面。因而编 35 | 辑 patchmode 文件不会产生自动解压缩的效果。如果您希望这样,您需要改变文件名。 36 | 37 | ============================================================================== 38 | vim:tw=78:ts=8:ft=help:norl: 39 | -------------------------------------------------------------------------------- /doc/pi_paren.cnx: -------------------------------------------------------------------------------- 1 | *pi_paren.txt* For Vim version 7.2. 最近更新: 2008年6月 2 | 3 | 4 | VIM 参考手册 by Bram Moolenaar 5 | 译者: Willis 6 | http://vimcdoc.sf.net 7 | 8 | 9 | 高亮匹配括号 *matchparen* 10 | 11 | 这里提到的功能是一个标准插件 |standard-plugin|。 12 | 只有 'compatible' 不置位时才能使用此插件。 13 | 14 | 设置 "loaded_matchparen" 变量可以避免载入此插件: > 15 | :let loaded_matchparen = 1 16 | 17 | 此插件安装 CursorMoved、CursorMovedI 和 WinEnter 自动命令来重新定义匹配高亮。 18 | 19 | *:NoMatchParen* *:DoMatchParen* 20 | 要在载入此插件后关闭它,用: > 21 | 22 | :NoMatchParen 23 | 24 | 要再次打开: > 25 | 26 | :DoMatchParen 27 | 28 | 使用的高亮是 MatchParen。":highlight" 命令可用来为它指定不同的颜色。例如: > 29 | > 30 | :hi MatchParen ctermbg=blue guibg=lightblue 31 | 32 | 匹配的字符组来自 'matchpairs' 选项。你可以改变该值来高亮不同的匹配。注意 不是 33 | 什么值都可以。比如,你不能高亮单引号或双引号,因为它们的开始和结束字符相同。 34 | 35 | 使用语法高亮的属性。如果光标目前不在字符串或注释语法项目里,则忽略字符串和注释 36 | 里的匹配。任何名字里包含 "string" 或 "comment" 的语法项目都被认为是字符串或注 37 | 释项目。 38 | 39 | 移动光标时,限制搜索范围以避免延迟。这些限制包括: 40 | - 窗口的可见部分。 41 | - 光标上下 100 行,避免关闭折叠存在时的延迟过长。 42 | - 光标前后 'synmaxcol' 乘以 2 个字节,避免存在带语法高亮的长行时延迟过长。 43 | 44 | 45 | 如果你希望 |%| 命令更好的工作,可以使用 matchit 插件,见 |matchit-install|。该 46 | 插件也可用于跳过注释里的匹配。这不同于 matchparen 高亮,两者使用不同的机制。 47 | 48 | ============================================================================== 49 | vim:tw=78:ts=8:ft=help:norl: 50 | -------------------------------------------------------------------------------- /doc/pi_spec.cnx: -------------------------------------------------------------------------------- 1 | *pi_spec.txt* For Vim version 7.2. 最近更新: 2006年7月 2 | 3 | 作者: Gustavo Niemeyer ~ 4 | 译者: Willis 5 | http://vimcdoc.sf.net 6 | 7 | 这是一个针对 rpm 规格文件的文件类型插件。 8 | 9 | 此 Vim 插件让你轻松更新 RPM 规格 (spec) 文件的更新记录段 (%changelog section) 10 | 的内容。如果该段还不存在,它可以为你新建段。如果你今天还没有更新,它会帮你建立 11 | 新的说明入口 (entry)。如果你还没有提供格式串 (|spec_chglog_format|),它会询问 12 | 你的 email 地址,然后自动为你提供该格式串。 13 | 14 | 1. 如何使用 |spec-how-to-use-it| 15 | 2. 自定义 |spec-customizing| 16 | 17 | ============================================================================== 18 | 1. 如何使用 *spec-how-to-use-it* 19 | 20 | spec_chglog 插件提供如下映射: 21 | 22 | :map c SpecChangelog 23 | 24 | 这意味着在规格文件里你可以通过按 |maplocalleader| 键 (缺省是 '\') 加 'c' 来执 25 | 行这个插件。如果你还没有设置 |spec_chglog_format|,此时插件会要求你提供 email 26 | 地址,编辑过程里会用到这个地址。 27 | 28 | 每次你运行此插件,它检查更新记录,看看最近的说明入口是否今天由你写入。如果是, 29 | 在此入口中插入新建更新记录,如果不是,它会建立一个新的更新记录入口。如果你打开 30 | |spec_chglog_release_info|,它同时还会检查文件名,版本和发布版本是不是匹配。如 31 | 果你自己还没有更新该软件包的发布号的话。这个插件能够智能地询问你是否要这么做。 32 | 33 | 设置键盘映射 *spec-setting-a-map* 34 | ------------- 35 | 36 | 正如你应该已经知道的,可以设置键盘映射执行任何 Vim 命令 (对此而言,其实还有别 37 | 的)。如果你不喜欢缺省的映射 c,可以自己定义。下面说明在 .vimrc 文 38 | 件里如何作此设置。比如,要把本插件映射到 键: 39 | > 40 | au FileType spec map SpecChangelog 41 | < 42 | 备注: 本插件会尊重你的本人意愿,不会再次把它的缺省设置强加于你。 43 | 44 | 该命令只会在规格文件的缓冲区中定义这个映射。 45 | 46 | 47 | ============================================================================== 48 | 2. 自定义 *spec-customizing* 49 | 50 | 格式串 *spec_chglog_format* 51 | ----------------- 52 | 53 | 你可以轻松地定制自己的规格文件入口的样式。为此,只须在 .vimrc 文件中这样设置 54 | "spec_chglog_format" 变量: > 55 | 56 | let spec_chglog_format = "%a %b %d %Y My Name " 57 | < 58 | 注意 "%a %b %d %Y" 是最常用的格式。如果你不提供格式串,第一次运行 SpecChanglog 59 | 命令时,它会询问 email 地址,然后为你构造 |spec_chglog_format| 变量。这种方式 60 | 下,你只要提供 email 地址一次。 61 | 62 | 要知道可用的格式串选项,察看 strftime() 函数的 man 手册页。 63 | 64 | 何处插入新的更新记录 *spec_chglog_prepend* 65 | ------------------------- 66 | 67 | 本插件通常把新的 %changelog 更新记录 (注意: 不是入口本身) 加在现有的记录之后。 68 | 如果你设置了 spec_chglog_prepend 变量 > 69 | 70 | let spec_chglog_prepend = 1 71 | 72 | 那么新记录将加在已有记录之前。 73 | 74 | 加入发布信息 *spec_chglog_release_info* 75 | ---------------------- 76 | 77 | 如果你愿意,本插件自动在每个更新记录入口中加入发布信息。这么做的一个好处是能控 78 | 制软件包每次更改之后是否更新发布号。如果包的版本或发行号没有更新,它询问你是否 79 | 要这么做。要打开这个功能,在 .vimrc 中加入以下代码: > 80 | 81 | let spec_chglog_release_info = 1 82 | 83 | 这样,更新记录入口的首个记录就会像这样: > 84 | 85 | + name-1.0-1cl 86 | 87 | 如果你不喜欢发布更新功能,也不想每次检测到旧的发布号时都回答 "No",可以关闭此 88 | 功能 > 89 | 90 | let spec_chglog_never_increase_release = 1 91 | 92 | 93 | 一切顺利!! 94 | 95 | vim:tw=78:ts=8:ft=help:norl: 96 | -------------------------------------------------------------------------------- /doc/pi_tar.cnx: -------------------------------------------------------------------------------- 1 | *pi_tar.txt* For Vim version 7.2. 最近更新: 2008年8月 2 | 3 | +====================+ 4 | | Tar 文件接口 | 5 | +====================+ 6 | 译者: Willis 7 | http://vimcdoc.sf.net 8 | 9 | Author: Charles E. Campbell, Jr. 10 | (remove NOSPAM from Campbell's email first) 11 | Copyright 2005-2008: The GPL (gnu public license) applies to *tar-copyright* 12 | tar.vim, tarPlugin.vim, and pi_tar.txt. 13 | No warranty, express or implied. Use At-Your-Own-Risk. 14 | 15 | ============================================================================== 16 | 1. 内容 *tar* *tar-contents* 17 | 1. 内容......................................................|tar-contents| 18 | 2. 用法......................................................|tar-usage| 19 | 3. 选项......................................................|tar-options| 20 | 4. 历史......................................................|tar-history| 21 | 22 | ============================================================================== 23 | 2. 用法 *tar-usage* *tar-manual* 24 | 25 | 编辑 *.tar 文件时,此插件进行处理,显示内容页面。移动光标到文件上,然后按 26 | 键,就可以选择该文件进行编辑。编辑后,可以写回该文件。目前,不能用 27 | 该插件建立新的 tar 归档文件。 28 | 29 | ============================================================================== 30 | 3. 选项 *tar-options* 31 | 32 | 以下是用户可以改变的变量,通常在 <.vimrc> 文件里设置。 33 | 变量 缺省值 解释 ~ 34 | *g:tar_browseoptions* "Ptf" 用于得到内容列表 35 | *g:tar_readoptions* "OPxf" 用于从 tar 包里提取文件 36 | *g:tar_cmd* "tar" tar 程序名 37 | *g:tar_nomax* 0 如果为真,不最大化文件窗口 38 | *g:tar_secure* 未定义 如果存在: 39 | 使用 "--" 来避免 tar 命令行上不想要的 40 | 选项扩展。 41 | 请确定你用的 tar 命令接受 "--";Posix 42 | 兼容的 tar 工具都接受。 43 | 如果不存在: 44 | tar 插件拒绝接受任何 "-" 开头的成员文 45 | 件。 46 | 不是所有的 tar 都支持 "--",所以这不是缺省行 47 | 为。 48 | *g:tar_writeoptions* "uf" 用于更新/替换文件 49 | 50 | 51 | ============================================================================== 52 | 4. 历史 (英文) *tar-history* 53 | 54 | v22 Aug 08, 2008 * security fixes 55 | v16 Jun 06, 2008 * tarfile:: used instead of tarfile: when editing files 56 | inside tarballs. Fixes a problem with tarballs called 57 | things like c:\abc.tar. (tnx to Bill McCarthy) 58 | v14 May 09, 2008 * arno caught a security bug 59 | May 28, 2008 * various security improvements. Now requires patch 299 60 | which provides the fnameescape() function 61 | May 30, 2008 * allows one to view *.gz and *.bz2 files that are in 62 | *.tar files. 63 | v12 Sep 07, 2007 * &shq now used if not the empty string for g:tar_shq 64 | v10 May 02, 2006 * now using "redraw then echo" to show messages, instead 65 | of "echo and prompt user" 66 | v9 May 02, 2006 * improved detection of masquerading as tar file 67 | v8 May 02, 2006 * allows editing of files that merely masquerade as tar 68 | files 69 | v7 Mar 22, 2006 * work on making tar plugin work across network 70 | Mar 27, 2006 * g:tar_cmd now available for users to change the name 71 | of the tar program to be used. By default, of course, 72 | it’s "tar". 73 | v6 Dec 21, 2005 * writing to files not in directories caused problems - 74 | fixed (pointed out by Christian Robinson) 75 | v5 Nov 22, 2005 * report option workaround installed 76 | v3 Sep 16, 2005 * handles writing files in an archive back to the 77 | archive 78 | Oct 18, 2005 * used instead of in autocmds 79 | Oct 18, 2005 * handles writing to compressed archives 80 | Nov 03, 2005 * handles writing tarfiles across a network using 81 | netrw#NetWrite() 82 | v2 * converted to use Vim7's new autoload feature by 83 | Bram Moolenaar 84 | v1 (original) * Michael Toren (see http://michael.toren.net/code/) 85 | 86 | ============================================================================== 87 | vim:tw=78:ts=8:ft=help 88 | -------------------------------------------------------------------------------- /doc/pi_vimball.cnx: -------------------------------------------------------------------------------- 1 | *pi_vimball.txt* For Vim version 7.2. 最近更新: 2008年6月 2 | 3 | -------------------- 4 | Vimball 归档处理程序 5 | -------------------- 6 | 译者: Willis 7 | http://vimcdoc.sf.net 8 | 9 | Author: Charles E. Campbell, Jr. 10 | (remove NOSPAM from Campbell's email first) 11 | Copyright: (c) 2004-2008 by Charles E. Campbell, Jr. *Vimball-copyright* 12 | The VIM LICENSE applies to Vimball.vim, and Vimball.txt 13 | (see |copyright|) except use "Vimball" instead of "Vim". 14 | No warranty, express or implied. 15 | Use At-Your-Own-Risk! 16 | 17 | ============================================================================== 18 | 1. 内容 *vba* *vimball* *vimball-contents* 19 | 20 | 1. 内容..........................................: |vimball-contents| 21 | 2. Vimball 简介..................................: |vimball-intro| 22 | 3. Vimball 手册..................................: |vimball-manual| 23 | MkVimball.....................................: |:MkVimball| 24 | UseVimball....................................: |:UseVimball| 25 | RmVimball.....................................: |:RmVimball| 26 | 4. Vimball 历史..................................: |vimball-history| 27 | 28 | 29 | ============================================================================== 30 | 2. Vimball 简介 *vimball-intro* 31 | 32 | Vimball 的目标就是使插件用户的使用更方便。有了 vimball 以后,用户只需 33 | 要: > 34 | vim someplugin.vba 35 | :so % 36 | :q 37 | < 然后插件和它的所有部件都会被安装在合适的目录里。注意 用户无须刻意进到 38 | 某个特定的目录来执行此命令。另外,插件的帮助也会被自动安装。 39 | 40 | 如果用户决定使用 AsNeeded 插件,vimball 会聪明地把本来要放到 41 | .vim/plugin/ 中的脚本放到 .vim/AsNeeded/ 里去。 42 | 43 | 删除 vimball 安装的插件很容易: > 44 | vim 45 | :RmVimball someplugin 46 | < 举例说吧,zip 和 tarball 对应的操作就不是那么简单了。 47 | 48 | Vimball 检视用户的 |'runtimepath'| 来确定把脚本放在哪里。如果可能,通 49 | 常使用 runtimepath 提到的第一个目录。用 > 50 | :echo &rtp 51 | < 来查看该目录。 52 | 53 | 54 | ============================================================================== 55 | 3. Vimball 手册 *vimball-manual* 56 | 57 | *:MkVimball* 58 | :[range]MkVimball[!] filename [path] 59 | 60 | 行范围内指定要保存在 vimball 里的文件的路径,但不包含通常在 61 | runtimepath (|'rtp'|) 指定的那部分。例如: > 62 | plugin/something.vim 63 | doc/something.txt 64 | < 在此范围的行上使用 > 65 | :[range]MkVimball filename 66 | < 67 | 建立文件 "filename.vba",Vimball.vim 随后可以用它来还原那些文件。如果 68 | 文件 "filename.vba" 已经存在,MKVimball 会给出警告而不建立文件。注意 69 | 这些路径都相对于你的 .vim (vimfiles) 目录,而所有文件都应该在该目录 70 | 下。更准确地说,vimball 插件通常使用 'runtimepath' 里第一个存在的目录 71 | 作为前缀;它不使用绝对路径,除非用户指定的就是如此。 72 | 73 | 如果使用感叹号 (!),MkVimball 总是建立 "filename.vba" 文件。如果已经存 74 | 在则覆盖之。此行为和 |:w| 类似。 75 | 76 | *g:vimball_mkdir* 77 | 首先尝试 |mkdir()| 命令 (并非所有系统都支持)。 78 | 79 | 如果该命令不存在,那么 g:vimball_mkdir 也不存在 (译者注: 原文如此)。此 80 | 时,它设为: 81 | |g:netrw_local_mkdir|,如果存在的话 82 | "mkdir",如果可执行的话 83 | "makedir",如果可执行的话 84 | 否则,未定义 85 | 用户可以自定义 g:vimball_mkdir 来直接指定建立目录的命令。vimball 如有 86 | 需要,会通过该命令来建立目录。 87 | 88 | *g:vimball_home* 89 | 通过指定变量 g:vimball_home,你可以覆盖 |'runtimepath'| 的使用。 90 | 91 | 路径预处理 *g:vimball_path_escape* 92 | 93 | vimball 使用的路径通过 s:Path() 预处理;此外,若干字符经过转义 (在前面 94 | 加上反斜杠)。这些字符定义在 g:vimball_path_escape 里,用户可以在 95 | .vimrc 初始化脚本中覆盖其定义。 96 | 97 | *vimball-extract* 98 | vim filename.vba 99 | 100 | 简单编辑一个 vimball 文件,Vimball.vim 会告诉用户必须执行 (source) 该 101 | 归档的内容才能提取其中的文件。 102 | 103 | 只有首行是 "Vimball Archiver by Charles E. Campbell, Jr., Ph.D." 的文 104 | 件才会被认为是 vimball 文件,从而才会继续提取操作。 105 | 106 | :VimballList *:VimballList* 107 | 108 | 本命令告诉 Vim 列出归档里的所有文件,包括每个文件的行数。 109 | 110 | :UseVimball [path] *:UseVimball* 111 | 112 | vimball 文件本身包含了该命令;它调用 vimball#Vimball() 例程,后者负责 113 | 对 vimball 解包。用户可以手动执行该命令,而无须执行 vimball;用户还可 114 | 以指定安装的路径来覆盖自动的选择,即 |'runtimepath'| 里的第一个存在的 115 | 目录。 116 | 117 | :RmVimball vimballfile [path] *:RmVimball* 118 | 119 | 本命令删除制定 vimball 产生的所有文件 (但不包括它可能建立的任何目录)。 120 | 用户也选择卸载文件的路径 (见 |'runtimepath'|);否则,缺省是 121 | 'runtimepath' 里的第一个存在的目录。 122 | 为了实现这一点,该目录下包含一个文件 (.VimballRecord),它包含了目前为 123 | 止所有使用过的 vimball 中要删除的文件的记录。 124 | 125 | 126 | ============================================================================== 127 | 4. Vimball 历史 (英文) *vimball-history* {{{1 128 | 129 | 26 : May 27, 2008 * g:vimball_mkdir usage installed. Makes the 130 | $HOME/.vim (or $HOME\vimfiles) directory if 131 | necessary. 132 | May 30, 2008 * (tnx to Bill McCarthy) found and fixed a bug: 133 | vimball wasn't updating plugins to AsNeeded/ 134 | when it should 135 | 25 : Mar 24, 2008 * changed vimball#Vimball() to recognize doc/*.??x 136 | files as help files, too. 137 | Apr 18, 2008 * RmVimball command is now protected by saving and 138 | restoring settings -- in particular, acd was 139 | causing problems as reported by Zhang Shuhan 140 | 24 : Nov 15, 2007 * |g:vimball_path_escape| used by s:Path() to 141 | prevent certain characters from causing trouble 142 | 22 : Mar 21, 2007 * uses setlocal instead of set during BufEnter 143 | 21 : Nov 27, 2006 * (tnx to Bill McCarthy) vimball had a header 144 | handling problem and it now changes \s to /s 145 | 20 : Nov 20, 2006 * substitute() calls have all had the 'e' flag 146 | removed. 147 | 18 : Aug 01, 2006 * vimballs now use folding to easily display their 148 | contents. 149 | * if a user has AsNeeded/somefile, then vimball 150 | will extract plugin/somefile to the AsNeeded/ 151 | directory 152 | 17 : Jun 28, 2006 * changes all \s to /s internally for Windows 153 | 16 : Jun 15, 2006 * A. Mechelynck's idea to allow users to specify 154 | installation root paths implemented for 155 | UseVimball, MkVimball, and RmVimball. 156 | * RmVimball implemented 157 | 15 : Jun 13, 2006 * bugfix 158 | 14 : May 26, 2006 * bugfixes 159 | 13 : May 01, 2006 * exists("&acd") used to determine if the acd 160 | option exists 161 | 12 : May 01, 2006 * bugfix - the |'acd'| option is not always defined 162 | 11 : Apr 27, 2006 * VimballList would create missing subdirectories that 163 | the vimball specified were needed. Fixed. 164 | 10 : Apr 27, 2006 * moved all setting saving/restoration to a pair of 165 | functions. Included some more settings in them 166 | which frequently cause trouble. 167 | 9 : Apr 26, 2006 * various changes to support Windows' prediction 168 | for backslashes and spaces in file and directory 169 | names. 170 | 7 : Apr 25, 2006 * bypasses foldenable 171 | * uses more exe and less norm! (:yank :put etc) 172 | * does better at insuring a "Press ENTER" prompt 173 | appears to keep its messages visible 174 | 4 : Mar 31, 2006 * BufReadPost seems to fire twice; BufReadEnter 175 | only fires once, so the "Source this file..." 176 | message is now issued only once. 177 | 3 : Mar 20, 2006 * removed query, now requires sourcing to be 178 | extracted (:so %). Message to that effect 179 | included. 180 | * :VimballList now shows files that would be 181 | extracted. 182 | 2 : Mar 20, 2006 * query, :UseVimball included 183 | 1 : Mar 20, 2006 * initial release 184 | 185 | 186 | ============================================================================== 187 | vim:tw=78:ts=8:ft=help:fdm=marker 188 | -------------------------------------------------------------------------------- /doc/pi_zip.cnx: -------------------------------------------------------------------------------- 1 | *pi_zip.txt* For Vim version 7.2. 最近更新: 2008年4月 2 | 3 | +====================+ 4 | | Zip 文件接口 | 5 | +====================+ 6 | 译者: Willis 7 | http://vimcdoc.sf.net 8 | 9 | Author: Charles E. Campbell, Jr. 10 | (remove NOSPAM from Campbell's email first) 11 | Copyright: Copyright (C) 2005-2008 Charles E Campbell, Jr *zip-copyright* 12 | Permission is hereby granted to use and distribute this code, 13 | with or without modifications, provided that this copyright 14 | notice is copied with it. Like anything else that's free, 15 | zip.vim, zipPlugin.vim, and pi_zip.txt are provided *as is* 16 | and it comes with no warranty of any kind, either expressed or 17 | implied. By using this plugin, you agree that in no event will 18 | the copyright holder be liable for any damages resulting from 19 | the use of this software. 20 | 21 | ============================================================================== 22 | 1. 内容 *zip* *zip-contents* 23 | 1. 内容....................................................|zip-contents| 24 | 2. 用法....................................................|zip-usage| 25 | 3. 附加扩展名..............................................|zip-extension| 26 | 4. 历史....................................................|zip-history| 27 | 28 | ============================================================================== 29 | 2. 用法 *zip-usage* *zip-manual* 30 | 31 | 编辑 *.zip 文件时,此插件进行处理,显示内容页面。移动光标到文件上,然后按 32 | 键,就可以选择该文件进行编辑。编辑后,可以写回该文件。目前,不能用 33 | 该插件建立新的 zip 归档文件。 34 | 35 | 选 项 36 | 37 | *g:zip_nomax* 38 | 39 | 如果此变量存在且为真,文件窗口在打开时不会自动最大化。 40 | 41 | *g:zip_shq* 42 | 不同的操作系统可能使用一个或多个 shell 来执行命令。Zip 试图猜测正确的引号使 43 | 用机制,使得文件名中可以包含空格和其它;如果猜错了,可用 > 44 | g:zip_shq 45 | < 修正。它在 Unix 上缺省是单引号 ('),而 Windows 上缺省是双引号 (")。如果你希 46 | 望不用引号,简单地在 <.vimrc> 里把 g:zip_shq 置为空串 (let g:zip_shq= "")。 47 | 48 | *g:zip_unzipcmd* 49 | 用此选项指定执行 "unzip" 任务的程序,用于浏览。缺省: > 50 | let g:zip_unzipcmd= "unzip" 51 | < 52 | *g:zip_zipcmd* 53 | 用此选项指定执行 "zip" 任务的程序,用于写入 (更新) 已在 zip 包中的文件;缺 54 | 省: > 55 | let g:zip_zipcmd= "zip" 56 | < 57 | 58 | ============================================================================== 59 | 3. 附加扩展名 *zip-extension* 60 | 61 | 看来有不少归档程序生成 zip 文件但不使用 .zip 扩展名 (.jar、.xpi 等)。要处理 62 | 这些文件,在 <.vimrc> 文件中放上: > 63 | 64 | au BufReadCmd *.jar,*.xpi call zip#Browse(expand("")) 65 | < 66 | 你可以自由扩展该行以包含更多应被当作 zip 文件的扩展名。 67 | 68 | ============================================================================== 69 | 4. 历史 (英文) *zip-history* {{{1 70 | v17 May 09, 2008 * arno caught a security bug 71 | v15 Sep 07, 2007 * &shq now used if not the empty string for g:zip_shq 72 | v14 May 07, 2007 * using b:zipfile instead of w:zipfile to avoid problem 73 | when editing alternate file to bring up a zipfile 74 | v10 May 02, 2006 * now using "redraw then echo" to show messages, instead 75 | of "echo and prompt user" 76 | * g:zip_shq provided to allow for quoting control for the 77 | command being passed via :r! ... commands. 78 | v8 Apr 10, 2006 * Bram Moolenaar reported that he received an error message 79 | due to "Pattern not found: ^.*\%0c"; this was caused by 80 | stridx finding a Name... at the beginning of the line; 81 | zip.vim tried 4,$s/^.*\%0c//, but that doesn't work. 82 | Fixed. 83 | v7 Mar 22, 2006 * escaped some characters that can cause filename handling 84 | problems. 85 | v6 Dec 21, 2005 * writing to files not in directories caused problems - 86 | fixed (pointed out by Christian Robinson) 87 | v5 Nov 22, 2005 * report option workaround installed 88 | v3 Oct 18, 2005 * used instead of in autocmds 89 | v2 Sep 16, 2005 * silenced some commands (avoiding hit-enter prompt) 90 | * began testing under Windows; works thus far 91 | * filetype detection fixed 92 | Nov 03, 2005 * handles writing zipfiles across a network using 93 | netrw#NetWrite() 94 | v1 Sep 15, 2005 * Initial release, had browsing, reading, and writing 95 | 96 | ============================================================================== 97 | vim:tw=78:ts=8:ft=help:fdm=marker 98 | -------------------------------------------------------------------------------- /doc/recover.cnx: -------------------------------------------------------------------------------- 1 | *recover.txt* For Vim version 7.2. 最近更新: 2006年5月 2 | 3 | 4 | Vim 参考手册 作者:Bram Moolenaar 5 | 译者: iCrazy http://vimcdoc.sf.net 6 | 更新:tocer 7 | 8 | 9 | 从崩溃中恢复 *crash-recovery* 10 | 11 | 您经历过这样的事情么?您录入一个文档,录入了很长时间,眼看就要完成的时候,灾难 12 | 来了:您的电脑崩溃了! 13 | 14 | 别 担 心 ! 15 | 16 | 您可以从 Vim 提供的文件里恢复大部分的改动,Vim 用这些文件保存文件的内容。一般 17 | 情况下,用单个命令就可以恢复您的文档: 18 | vim -r filename 19 | 20 | 1. 交换文件 |swap-file| 21 | 2. 恢复 |recovery| 22 | 23 | ============================================================================== 24 | 1. 交换文件 *swap-file* 25 | 26 | Vim 把您对文件的改动保存在一个交换文件中。多数情况下,用修改前的原文件加上 Vim 27 | 的交换文件,您就可以恢复对文档所做的改动了。 28 | 29 | 您可以用以下的命令看到当前正在使用的交换文件的文件名: 30 | 31 | :sw[apname] *:sw* *:swapname* 32 | 33 | 正常情况下,交换文件的文件名和您正在编辑的文件相同,只是扩展名换成了 ".swp"。 34 | - 在 Unix 系统上,交换文件名以 '.' 开始,这样它们就不会在列目录文件时被显示出 35 | 来。 36 | - 在 MS-DOS 系统上,如果 'shortname' 选项是打开的,原文件名中的 '.' 会被 '_' 37 | 替代。 38 | - 如果同名交换文件已经存在 (例如:当您从一个崩溃中恢复时),Vim 会显示一个警告 39 | 信息,并且会使用另外一个诸如 ".swo",".swn" ……这样的文件扩展名。 40 | - 现存的文件永远不会因此被 Vim 所覆盖。 41 | - 当 Vim 停止编辑文件的时候,交换文件会被立即删除。 42 | 43 | 技术上:用 '_' 替代 '.' 是为了避免在与 MS-DOS 兼容的文件系统中 (crossdos、 44 | multidos 等) 出现问题。如果 Vim 检测到您所编辑的文件存放在一个与 45 | MS-DOS 兼容的文件系统上,Vim 会建立一个标志位,实现和 'shortname' 选项 46 | 相同的功能。当您开始编辑其他文件时,这个标志位会被重置。 47 | *E326* 48 | 如果扩展名是 ".swp" 的文件已经存在,逐次递减最后的字母,直到找到没有现 49 | 存文件的名字为止。如果过了 ".saa" 还找不到,不建立交换文件。 50 | 51 | 通过设置 'directory' 这个选项,您可以把交换文件放到其他目录中去,而不是默认地 52 | 和您所编辑的文件放在同一目录中。 53 | 优点: 54 | - 您不会因为 ".swp" 文件的存在弄乱您的目录。 55 | - 当您把选项 'directory' 的值设置到另一个分区的时候,可以减少 (在一次系统崩溃 56 | 中) 文件所在分区文件系统毁坏的危险。 57 | 缺点: 58 | - 如果您在不同目录下面编辑同名文件,您会碰到文件重名问题 (尽管 Vim 会比较文件 59 | 路径而尽力避免此问题的发生)。这会导致 Vim 给出虚假的 ATTENTION 警告信息。 60 | - 如果您使用您的宿主 (home) 目录,而别人试图编辑同一个文件的时候,他不能访问您 61 | 的交换文件,也就不会出现 ATTENTION 警告信息。 62 | 在 Amiga 系统上,您还可以使用一种可以恢复数据的 ram disk,但是不能保证它可以 63 | 100% 工作正常。把交换文件放在普通的 ram disk (就像 Amiga 系统中的内存那样) 或 64 | 者放在重启后所有内容都会被清除的地方 (就像 Unix 上的 /tmp 目录) 是没有意义的, 65 | 在一次计算机崩溃中您会丢失所有的交换文件。 66 | 67 | 如果您希望把交换文件放在一个固定的地方,把类似于下面这些的命令写到您的 .vimrc 68 | 文件中去: 69 | :set dir=dh2:tmp (针对 Amiga) 70 | :set dir=~/tmp (针对 Unix) 71 | :set dir=c:\\tmp (针对 MS-DOS 和 Win32) 72 | 这对于编辑软盘上的文件是十分便利的。当然您必须先自己建立这个 "tmp" 目录。 73 | 74 | 对于那些只读的文件,Vim 不会产生交换文件,除非文件特别大,使得内存使用超出了 75 | 'maxmem' 或 'maxmemtot' 的设置值。当然,如果对只读的文件进行了修改,交换文件文 76 | 件还是会被自动建立。 77 | 78 | 可以复位 'swapfile' 这个选项的值以避免产生交换文件。 79 | 80 | 81 | 检测已经存在的交换文件 ~ 82 | 83 | 您可以在用户手册中找到这些信息,参阅章节 |11.3|。 84 | 85 | 86 | 更新交换文件 ~ 87 | 88 | 在您录入 200 个字符后或者 4 秒内没有录入任何字符时,交换文件会被更新。只有在缓 89 | 冲区被修改的情况下,才会有这样的更新,仅仅移动光标是不会更新交换文件的。为什么 90 | 不进行实时的更新?原因在于这样频繁的更新会极大的拖慢其他正常工作的速度。您可以 91 | 在 'updatecount' 选项中修改 200 个字符的设置,还可以在 'updatetime' 选项中修改 92 | 4 秒的设置 (时间以毫秒为单位给出)。Vim 更新交换文件后,会把文件同步到磁盘上 93 | 去。这会消耗一定的时间,在忙碌的 Unix 系统上尤其如此。如果不希望这样,您可以把 94 | 'swapsync' 选项置成空串。不过,这样会使文件丢失的几率增大。在一些非 Unix 系统 95 | (MS-DOS、Amiga) 上,交换文件根本不会被写到磁盘上。 96 | 97 | 如果不希望把修改写到交换文件中,可以通过把 'updatecount' 选项设成 0 来避免这一 98 | 点,用 "-n" 选项启动 Vim 时也可以达到相同的效果。而把 'updatecount' 选项设成非 99 | 0 值可以恢复对交换文件的写入。这种情况下,所有缓冲区的交换文件都会被建立。但是 100 | 当把 'updatecount' 选项设成 0 时,已经存在的交换文件不会被删除,只有设置之后打 101 | 开的文件才受到影响。 102 | 103 | 如果您想确定您对文件所作的修改已经被写到交换文件中了,使用这个命令: 104 | 105 | *:pre* *:preserve* *E313* *E314* 106 | :pre[serve] 把缓冲区中的所有文本写入交换文件中。这样在文件恢复时就 107 | 不再需要原文件了。 108 | 本命令设置了当前缓冲区的一个标志位。如果 'cpoptions' 109 | 里有 '&' 标志位而且 Vim 退出时如果此缓冲区还处于载入状 110 | 态,不删除此缓冲区的交换文件 |cpo-&|。 111 | {Vi: 也可能退出} 112 | 113 | Vim 会通过文件开始的 6 个字符 "b0VIM " 来识别它的交换文件。Vim 的版本号 (如: 114 | 3.0) 会紧跟在那些字符之后。 115 | 116 | 117 | 链接和符号链接 ~ 118 | 119 | Unix 上同一文件可以有两个名字。这可以通过硬链接和符号链接 (symlink) 完成。 120 | 121 | 对于硬链接,Vim 不知道文件另外的名字。所以,交换文件名基于你用来编辑的文件名。 122 | 也不会检查是否编辑了使用别的名字的相同文件,因为 Vim 无法找到另外那个交换文件 123 | (除非在你整个硬盘上搜索,这太慢了)。 124 | 125 | 对于符号链接,Vim 解析链接以找到实际文件的名字。交换文件名基于那个实际的名字。 126 | 所以不管你用哪个名字编辑,交换文件名通常总是相同的。但有若干例外: 127 | - 如果实际文件所在的目录不可写,交换文件会放在别处。 128 | - 如果符号链接因为某些原因形成了循环,你会得到 *E773* 错误消息,而使用未经修改 129 | 的文件名。你不能在以后正常地保存文件。 130 | 131 | ============================================================================== 132 | 2. 恢复 *recovery* *E308* *E311* 133 | 134 | 基本的文件恢复已经在用户手册中解释了:|usr_11.txt|。 135 | 136 | 另一种恢复方式是在启动 Vim 后使用 ":recover" 命令。当您用 Vim 编辑一个文件并且 137 | 得到一个 "注意:已找到一个交换文件 ..." 这样的提示时,这样比较方便。这种情况 138 | 下,一个简单的 ":recover" 命令就可以完成所有的工作。您也可以在使用 ":recover" 139 | 命令时指定文件名或者交换文件名: 140 | *:rec* *:recover* *E305* *E306* *E307* 141 | :rec[over] [file] 试图从交换文件中恢复 [file]。如果没有指定 [file],使用 142 | 当前缓冲区的文件名。当前缓冲区中的内容会丢失。如果缓冲 143 | 区已经被修改,此命令失效。 144 | 145 | :rec[over]! [file] 类似于 ":recover",但当前缓冲区中的任何改变都会丢失。 146 | 147 | *E312* *E309* *E310* 148 | 在交换文件被损坏时,Vim 仿佛有些智能,知道接下来该怎么做。如果 Vim 对于找到的 149 | 文件有所怀疑,它会给出一个出错信息,并且在文本中插入含有 "???" 的行。如果您在 150 | 恢复的时候看到了出错信息,请在文件中查找 "???" 并确定到底哪里出了问题。或许您 151 | 仍然可以通过剪切和粘贴来取回可用的信息。 152 | 153 | 最常见的信息是 "???LINES MISSING"。这表示 Vim 无法从原文件中读取文本。通常在系 154 | 统崩溃而导致部分原文件无法及时写入磁盘时会出现这样的情况。 155 | 156 | 在覆盖原文件并删除交换文件之前,请务必确定您所作的恢复是成功的。先把恢复出来的 157 | 文件存到别的地方,然后运行 'diff' 来确定是否已经所需要的改动,是个好习惯。 158 | 159 | 当您确定恢复成功后,请删除交换文件。否则,您会继续得到 ".swp" 文件已经存在的警 160 | 告信息。 161 | 162 | {Vi: 在有可以恢复的内容时,用另一种方式恢复并且发送邮件} 163 | 164 | vim:tw=78:ts=8:ft=help:norl: 165 | -------------------------------------------------------------------------------- /doc/remote.cnx: -------------------------------------------------------------------------------- 1 | *remote.txt* For Vim version 7.2. 最近更新: 2008年6月 2 | 3 | 4 | VIM 参考手册 by Bram Moolenaar 5 | 译者: Willis,tocer 6 | http://vimcdoc.sf.net 7 | 8 | 9 | Vim 客户-服务器 通信 *client-server* 10 | 11 | 1. 通用功能 |clientserver| 12 | 2. X11 专用条目 |x11-clientserver| 13 | 3. MS-Windows 专用条目 |w32-clientserver| 14 | 15 | {Vi 没有任何这里的功能} 16 | 17 | ============================================================================== 18 | 1. 通用功能 *clientserver* 19 | 20 | 如果编译时加入 |+clientserver| 特性,Vim 可以作为命令服务器,接受客户的消息并 21 | 执行。同时,Vim 也可以作为客户端,发送消息给 Vim 服务器。 22 | 23 | 可以使用以下的命令行参数: 24 | 25 | 参数 意义 ~ 26 | 27 | --remote [+{cmd}] {file} ... *--remote* 28 | 在远端打开文件列表。如果没有 Vim 服务器,就在 29 | 本地执行。 30 | 有一个可选的初始命令: #{cmd},它必须是后面可以 31 | 跟 "|" 的 Ex 命令。 32 | 命令行的其余部分将作为文件列表。所以,非文件 33 | 的参数一定要在此之前出现。 34 | 你不能用这个方法编辑标准输入 |--|。 35 | 远端的 Vim 将被推向前台。如果不想如此,用 > 36 | vim --remote-send ":n filename" 37 | < --remote-silent [+{cmd}] {file} ... *--remote-silent* 38 | 同上,但如果服务器没打开而需要本地编辑,不产生 39 | 警告。 40 | --remote-wait [+{cmd}] {file} ... *--remote-wait* 41 | 同 --remote,但直到所有的文件在远端被完成 (卸 42 | 载) 为止才返回。 43 | --remote-wait-silent [+{cmd}] {file} ... *--remote-wait-silent* 44 | 同 --remote-wait,但如果服务器没打开,不产生警 45 | 告。 46 | *--remote-tab* 47 | --remote-tab 同 --remote 但用新标签页打开每个文件。 48 | *--remote-tab-silent* 49 | --remote-tab-silent 同 --remote-silent 但用新标签页打开每个文件。 50 | *--remote-tab-wait* 51 | --remote-tab-wait 同 --remote-wait 但用新标签页打开每个文件。 52 | 53 | *--remote-tab-wait-silent* 54 | --remote-tab-wait-silent 同 --remote-wait-silent 但用新标签页打开每个文 55 | 件。 56 | *--servername* 57 | --servername {name} 成为用 {name} 作为名字的服务器。如果同时也用了 58 | 某个 --remote 命令,连接到服务器 {name},而不 59 | 使用缺省的名字。 (见下)。 60 | *--remote-send* 61 | --remote-send {keys} 发送键序列 {keys} 到服务器,然后退出。{keys} 62 | 不通过映射。能识别特殊的键名,如 "" 会生成 63 | CR 字符。 64 | *--remote-expr* 65 | --remote-expr {expr} 在服务器上执行 {expr}。然后在标准输出上打出结 66 | 果。 67 | *--serverlist* 68 | --serverlist 输出可用的服务器名字的列表。 69 | 70 | 71 | 示例 ~ 72 | 73 | 在一个已经运行的 GVIM 服务器上编辑 "file.txt"。 > 74 | gvim --remote file.txt 75 | 76 | 在一个已经运行的名为 FOOBAR 的服务器上编辑 "file.txt"。 > 77 | gvim --servername FOOBAR --remote file.txt 78 | 79 | 在名为 "FILES" 的服务器上编辑 "file.txt",如果不存在这个服务器,自己成为服务器 80 | "FILES"。 > 81 | gvim --servername FILES --remote-silent file.txt 82 | 83 | 下面的例子不能工作。--remote 之后所有的参数都被视作文件名: > 84 | gvim --remote --servername FOOBAR file.txt 85 | 86 | 在远端服务器上编辑文件 "+foo" (注意 "./" 的使用避免了打头的加号的特别含义)。 > 87 | vim --remote ./+foo 88 | 89 | 告诉远端服务器 "BLA" 写入所有文件,并且退出。 > 90 | vim --servername BLA --remote-send ':wqa' 91 | 92 | 93 | 服 务 器 名 94 | 95 | 缺省地,Vim 试图用启动时的名字注册服务器名 (gvim、egvim ...),你可以用 96 | --servername 参数覆盖之。如果不能用指定的名字,尝试附加一个后缀,直到找到一个 97 | 空闲的名字为止。比如,在同一个 X 服务器上,第二次启动 gvim 的服务器名会是 98 | "gvim1"。可以通过 |v:servername| 得到最终的服务器名。这里忽略大小写的区别,所 99 | 以 "gvim" 和 "GVIM" 重复。 100 | 101 | 当 Vim 启动时带有 --remote、--remote-wait 或者 --remote-send 参数时,会根据上 102 | 述的方法由启动名和指定的 --servername 参数决定要访问的服务器名。如果准确的匹 103 | 配找不到,寻找第一个可以带数字后缀的服务器。不过,如果 --servername 给出的名字 104 | 已经带有数字后缀,必须准确匹配。 105 | 106 | 如果使用 --remote 和 --remote-wait 但没有可用的服务器,Vim 会根据剩余的参数启 107 | 动,自己编辑这些文件。这样,发送命令给 gvim 的时候,就不需要关心它是否已经启 108 | 动。 109 | 110 | --serverlist 参数让 Vim 在标准输出 (stdout) 上打出所有已经注册的命令服务器,然 111 | 后退出。 112 | 113 | Win32 注意事项: 不一定总能把 Vim 服务器切换到在前台,因为 MS-Windows 不允许这 114 | 么做。客户通过 --remote 和 --remote-wait 参数调用而服务器名以 "g" 开始的时候, 115 | 服务器将被推向前台。 116 | 117 | 118 | 远 程 编 辑 119 | 120 | 用上面的结果,--remote 参数随后基于其后的参数构造一个 |:drop| 命令并发送之。 121 | --remote-wait 也会这么做,但同时等待所有文件编辑任务的完成。这是通过 BufUnload 122 | 事件完成的。文件卸载时,Vim 假设你完成了它的编辑任务。 123 | 注意: --remote 和 --remote-list 参数会吃掉命令行余下的部分。也就是说,余下的参 124 | 数都被认为是文件名,不要把参数放在那里! 125 | 126 | 函 数 127 | *E240* *E573* 128 | 若干 Vim 的函数可以用来书写命令服务器的脚本。参见 |eval.txt| 的描述,也可以在 129 | 下面的函数名字上按 CTRL-] 以得到它们完整的描述。 130 | 131 | 摘要 解释 ~ 132 | remote_expr( server, string, idvar) 发送表达式 133 | remote_send( server, string, idvar) 发送键序列 134 | serverlist() 得到可用服务器的列表 135 | remote_peek( serverid, retvar) 检查返回的字符串 136 | remote_read( serverid) 读取返回的字符串 137 | server2client( serverid, string) 发送返回字符串 138 | remote_foreground( server) 把服务器推向前台 139 | 140 | 也可参考 |CTRL-\_CTRL-N|,它可用来引导键序列。 141 | server2client() 的 {serverid} 可以通过 expand("") 得到。 142 | 143 | ============================================================================== 144 | 2. X11 专用条目 *x11-clientserver* 145 | *E247* *E248* *E251* *E258* *E277* 146 | 147 | 客户和服务器的通信是通过 X 服务器进行的。必须指明 Vim 服务器所处的 DISPLAY 位 148 | 置。通常的 X 服务器的保护措施这里也适用,你必须有权限在 X 服务器上打开一个窗 149 | 口,这样不同系统间的通信才有可能。 150 | 151 | 缺省地,GUI 的 Vim 会在 X 服务器上注册一个名字,使得后续的执行能通过这个名字寻 152 | 址并向它发送字符串。Vim 也可以作为一个客户端,给同一个 X11 显示上的其它 Vim 实 153 | 例发送字符串。 154 | 155 | X11 GUI 的 Vim (gvim) 启动时,会试图在根窗口的 'VimRegistry' 属性上注册发送服 156 | 务器的名字。 157 | 158 | 非 GUI 但可以访问到 X11 显示的 Vim (打开了 |xterm-clipboard|) 也可以作为命令服 159 | 务器,只要服务器名通过 --servername 参数明确给出就行了。 160 | 161 | 空的 --servername 参数关闭命令服务器。 162 | 163 | 要从别的应用程序向 Vim 服务器发送命令,可以阅读源代码 src/if_xcmdsrv.c。那里包 164 | 含了 Vim 使用的协议的一些情况。 165 | 166 | ============================================================================== 167 | 3. Win32 专用条目 *w32-clientserver* 168 | 169 | 每个 Win32 的 Vim 都可以作为服务器,包括控制台版本。你不需要编译时带 OLE 的版 170 | 本。我们使用 Windows 消息,它适用于任何版本的 MS-Windows。不过,它只允许在同一 171 | 个机器上进行通信。 172 | 173 | 因为我们使用 MS-Windows 的消息,别的应用程序也可以和 Vim 服务器通信。一个替代 174 | 方案是用 OLE 功能 |ole-interface|。 175 | 176 | 如果用 gvim,--remote-wait 正确的使用方法只能是: > 177 | 178 | start /w gvim --remote-wait file.txt 179 | < 180 | vim:tw=78:sw=4:ts=8:ft=help:norl: 181 | -------------------------------------------------------------------------------- /doc/rileft.cnx: -------------------------------------------------------------------------------- 1 | *rileft.txt* For Vim version 7.2. 最近更新: 2006年2月 2 | 3 | 4 | VIM 参考手册 作者: Avner Lottem 5 | 更新: Nadim Shaikli 6 | 译者: Willis 7 | http://vimcdoc.sf.net 8 | 9 | 10 | Vim 的从右到左显示模式 *rileft* 11 | 12 | 13 | 这些功能是由 Avner Lottem 最早创建的: 14 | E-mail: alottem@iil.intel.com 15 | Phone: +972-4-8307322 16 | 17 | {Vi 没有这些功能} 18 | 19 | *E26* 20 | 这一特性只有在编译时加入 |+rightleft| 特性才能得到。 21 | 22 | 23 | 简介 24 | ------------ 25 | 有些语言,例如阿拉伯语、波斯语、希伯来语 (还有其他),要求从右到左显示他们的文 26 | 字的能力。这些语言的文件以常规的方式储存,从右到左只是一个对显示功能的要求 (根 27 | 据 Unicode 规格的定义): 设定为从右到左的文件里字符在屏幕的显示应是从右到左。 28 | 29 | 双向显示 (英语缩写是 bidi) 是 Unicode 提供的对这些语言的一个完整解决方案。bidi 30 | 提供用户在同一个窗口同时显示从右到左和从左到右文本的能力。目前,为了简单起见, 31 | Vim 并没有提供 bidi,而只是提供一个方法来显示/输入/使用从右到左的语言。一个较 32 | 旧的混合解决方案是为每个字符 (或一组字符) 编码一个不同的方向。我们不支持这个方 33 | 案,因为这样的支持对于一个已有的编辑器来说不是简单的增加功能而已 (而且 Unicode 34 | 也不认可这种方案)。 35 | 36 | 特色 37 | ---------- 38 | o 就像原有的 Vim 一样,编辑从左到右的文件。 39 | 40 | o 在从右到左的窗口里察看和编辑文件。文件朝向是窗口的设置,所以可以在从左到右 41 | 和从右到左两种模式下同时察看同一个文件。(这有助于编辑混合两种文字的文件)。 42 | 43 | o 和原有的 Vim 兼容。几乎所有的功能都支持从右到左的模式 (参看下面的漏洞)。 44 | 45 | o 从反向的插入模式退回到文件里正确的位置 (如果可能的话)。 46 | 47 | o 不需要终端对从右到左能力的特别支持。这项改动完全独立于硬件。 48 | 49 | o 许多语言使用和需要从右到左的支持。这些语言可以相当容易地通过加入他们需要的 50 | 键盘映射和少量的代码改进得到支持。其中已经支持的语言包括 - |arabic.txt|、 51 | |farsi.txt| 和 |hebrew.txt|。 52 | 53 | 54 | 如果你有兴趣 ... 55 | -------------- 56 | 57 | o 启动 58 | ----------- 59 | + 'rightleft' ('rl') 把窗口朝向设为从右到左。 60 | + 'delcombine' ('deco'),布尔值,如果编辑 UTF-8 编码的语言,我们可以单独删 61 | 除合成用字符,它被附加 (superimpose) 于在它之前的字符之上 (一些语言要求如 62 | 此)。 63 | + 'rightleftcmd' ('rlc') 在某些模式 (比如: 搜索) 下,把命令行也设成从右到左 64 | 的朝向。 65 | 66 | o 反向输入 *ins-reverse* 67 | ---------------- 68 | 为便于最大限度地利用 'rightleft' 选项,我们可以允许反向插入。如果 'revins' 69 | (反向输入) 选项被打开,插入是反向的。这可以用来输入从右到左的文字。这时,输 70 | 入文字时,光标不动,文本向右移动。 删除光标下的字符,CTRL-W 和 CTRL-U 71 | 工作的方向也经过反转。无论 'backspace' 选项如何设置,、CTRL-W 和 CTRL-U 72 | 并不会在插入点开始处和行尾停住。 73 | 74 | 现在 (还) 没有反向替换模式。 75 | 76 | 如果设置了 "showmode" 选项,反向插入模式激活时,状态行会显示 77 | "-- REVERSE INSERT --"。 78 | 79 | o 在从右到左的窗口粘贴 80 | ---------------------------------- 81 | 如果用鼠标剪切文本,然后在从右到左的窗口中粘贴,文本会被反向,这时因为从剪 82 | 切缓冲区里得到的字符是从左到右的,而文件中的插入操作是从右到左的。要避免这 83 | 个问题,在粘贴前切换 'revins' 选项。 84 | 85 | 86 | 漏洞 87 | ---- 88 | o 在从右到左的窗口里不能正确处理 CTRL-A 和 CTRL-X 命令 (加和减)。 89 | 90 | o 在命令行中不支持反向插入和从右到左的模式。不过,编辑器功能并未减少,因为可 91 | 以在命令行上从左到右地输入键盘映射、缩写和搜索命令。 92 | 93 | o 从右到左的模式较慢,因为从右到左是 Vim 自己模拟而不是控制终端处理的。 94 | 95 | o 使用 Athena GUI 时,底部的滚动条工作方向是错的。这很难修正。 96 | 97 | o 如果 'rightleft' 和 'revins' 都打开,'textwidth' 不能工作。行不会自动回绕。 98 | 你只会得到一个很长的行。 99 | 100 | o 没有完整的双向显示 (bidi) 支持。 101 | 102 | 103 | vim:tw=78:ts=8:ft=help:norl: 104 | -------------------------------------------------------------------------------- /doc/russian.cnx: -------------------------------------------------------------------------------- 1 | *russian.txt* For Vim version 7.2. 最近更新: 2006年7月 2 | 3 | 4 | VIM 参考手册 by Vassily Ragosin 5 | 译者: Willis 6 | http://vimcdoc.sf.net 7 | 8 | 9 | Vim 中的俄罗斯语的本地化和支持 *russian* *Russian* 10 | 11 | 1. 简介 |russian-intro| 12 | 2. 俄语键盘映射 |russian-keymap| 13 | 3. 本地化 |russian-l18n| 14 | 4. 已知漏洞 |russian-issues| 15 | 16 | =============================================================================== 17 | 1. 简介 *russian-intro* 18 | 19 | Vim 的俄罗斯语支持已经相当完善。你可以像其他语言一样输入和查看俄语文字,无须特 20 | 别改变设置。 21 | 22 | =============================================================================== 23 | 2. 俄语键盘映射 *russian-keymap* 24 | 25 | 要切换语言,你可以使用系统自带的键盘切换工具。你也可以使用 Vim 发布中的某一个 26 | 俄语的键盘映射。例如, 27 | > 28 | :set keymap=russian-jcukenwin 29 | < 30 | 如果是后者,即使你没有系统俄语键盘或者一个独立的系统范围内的键盘设置,你还是可 31 | 以在语言间切换,参看 'keymap'。你也可以专门映射一个键来进行键盘切换。如果你选择 32 | 这么做,参看 |:map|。 33 | 34 | 为了你的方便起见,为了避免直接键盘切换,当你需要键入普通模式的命令时,你可以使 35 | 用 'langmap' 选项: 36 | > 37 | :set langmap=ФИСВУАПРШОЛДЬТЩЗЙКЫЕГМЦЧНЯ;ABCDEFGHIJKLMNOPQRSTUVWXYZ, 38 | фисвуапршолдьтщзйкыегмцчня;abcdefghijklmnopqrstuvwxyz 39 | 40 | 这是 utf-8 编码的,如果你的 'encoding' 不是,你无法正常阅读。你也必须在一行内 41 | 输入整个命令,上面的文字换了行,但只是为了方便阅读起见。 42 | 43 | =============================================================================== 44 | 3. 本地化 *russian-l18n* 45 | 46 | 如果你希望把消息,帮助文件,菜单,和其他项目翻译成俄语,你需要安装 RuVim 语言 47 | 包。多种代码页的该软件可以从这里得到: 48 | 49 | http://www.sourceforge.net/projects/ruvim/ 50 | 51 | 请你确定你的 Vim 至少是 6.2.506 或以上的版本,并且如果要自动安装,请使用 ruvim 52 | 0.5 或以上的版本。Vim 必须在编译时加入 |+gettext| 特性,才能使用户界面的项目被 53 | 翻译。 54 | 55 | 下载了 RuVim 项目的软件包以后,把它解压到 $VIMRUNTIME 目录。如果你的 Vim 编译 56 | 时加入 |+multi_byte| 特性的话,我们建议使用 UTF-8 包。 57 | 58 | 要看到俄语的文档,请将 'helplang' 选项设为 "ru"。 59 | 60 | =============================================================================== 61 | 4. 已知漏洞 *russian-issues* 62 | 63 | -- 如果你在 Win32 控制台使用俄语的消息翻译,那你也许会看 "vim --help"、 64 | "vim --version" 命令和 Win32 控制窗口的标题使用了错误的代码页。这是由 GNU 65 | gettext 库的一个问题造成的,将来的 gettext 的发布也许能解决这个问题。 66 | 67 | =============================================================================== 68 | vim:tw=78:ts=8:ft=help:norl: 69 | -------------------------------------------------------------------------------- /doc/sign.cnx: -------------------------------------------------------------------------------- 1 | *sign.txt* For Vim version 7.2. 最近更新: 2006年2月 2 | 3 | 4 | VIM 参考手册 作者: Gordon Prieur 5 | Bram Moolenaar 6 | 译者: Willis 7 | http://vimcdoc.sf.net 8 | 9 | 10 | 特性: 标号支持 *sign-support* 11 | 12 | 1. 简介 |sign-intro| 13 | 2. 命令 |sign-commands| 14 | 15 | {Vi 没有这些功能} 16 | {仅当编译时加入 |+signs| 特性才可用} 17 | 18 | ============================================================================== 19 | 1. 简介 *sign-intro* *signs* 20 | 21 | 当调试器或者其他集成开发环境的工具控制编辑器时,它需要通过给出某些特定的高亮以 22 | 给用户一些关于文件有用信息的反馈。一个例子是调试器在左边的列中给出图标来表示这 23 | 里有一个断点。另一个可能的例子是用一个箭头代表当前程序计数器 PC 的位置。标号特 24 | 性既包括在窗口的左边放置标号或者图标的支持,也包括该行使用的高亮的定义。显示图 25 | 像化的标号可能只适用于 gvim (虽然 Sun Microsystem 的 dtterm 也支持,它是我所知 26 | 的唯一支持的终端模拟器)。但文字化的标号和高亮应该可用于任何彩色终端模拟器。 27 | 28 | 标号和相应的高亮并不仅对调试器有用。Sun 的 Visual WorkShop 用标号和高亮来标识 29 | 错误和源程序浏览器的命中位置。它的调试器也支持 8 到 10 种不同的标号和高亮色。 30 | |workshop| Netbeans |netbeans| 也是如此。 31 | 32 | 应用标号的过程分两步进行: 33 | 34 | 1. 定义标号。这里指定图像,文字和高亮设定。例如,你可以定义 "break" 标号为路边 35 | 的停止符号和文字 "!!"。 36 | 37 | 2. 放置标号。这里指定标号显示的文件和行号。每个定义好的标号可以在不同的文件和 38 | 行号上多次放置。 39 | 40 | 如果文件里定义了标号,Vim 自动增加两个字符的纵列来显示标号。撤销最后一个标号之 41 | 后,该列又会自动消失。该列的颜色由 SignColumn 高亮组定义 |hl-SignColumn|。一个 42 | 设定该颜色的示例: > 43 | 44 | :highlight SignColumn guibg=darkgrey 45 | 46 | ============================================================================== 47 | 2. 命令 *sign-commands* *:sig* *:sign* 48 | 49 | 这里提供了一例,在当前文件的第 23 行显示 piet 标号,以文字 ">>" 标明。 > 50 | :sign define piet text=>> texthl=Search 51 | :exe ":sign place 2 line=23 name=piet file=" . expand("%:p") 52 | 53 | 删除标号的命令: > 54 | :sign unplace 2 55 | < 56 | 注意 ":sign" 命令后面不能跟其它命令或者注释。如果需要,使用 |:execute| 命令。 57 | 58 | 59 | 定 义 标 号 *:sign-define* *E255* *E160* *E612* 60 | 61 | :sign define {name} {argument}... 62 | 定义新标号或为已存在的标号设置属性。{name} 可以是完全由数位组 63 | 成的数值,也可以是由非数位开头的名字。 64 | 可以定义大约 120 个不同的标号。 65 | 66 | 允许的参数是: 67 | 68 | icon={pixmap} 69 | 位图文件名。必须是完整的路径名。位图应该能够在两个字符的宽度内 70 | 显示。但是不会实际检查这一点,如果位图太大,刷新时会有问题。只 71 | 有 GTK 2 可以按比例缩放位图,使之刚好能占据可用的空间。 72 | 工具包 支持 73 | GTK 1 pixmap (.xpm) 74 | GTK 2 许多 75 | Motif pixmap (.xpm) 76 | 77 | linehl={group} 78 | 用以显示整个标号行的高亮组。多用于定义背景色。 79 | 80 | text={text} *E239* 81 | 没有图标或者不用 GUI 时显示的文本。只允许可显示字符,而且必须 82 | 占据一到两个显示单元。 83 | 84 | texthl={group} 85 | 显示文本项目的高亮组。 86 | 87 | 88 | 删 除 标 号 *:sign-undefine* *E155* 89 | 90 | :sign undefine {name} 91 | 删除已定义的标号。如果 {name} 标号已经放置,会有问题。 92 | 93 | 94 | 列 出 标 号 *:sign-list* *E156* 95 | 96 | :sign list 列出所有的标号和它们的属性。 97 | 98 | :sign list {name} 99 | 列出单个标号和他的属性。 100 | 101 | 102 | 放 置 标 号 *:sign-place* *E158* 103 | 104 | :sign place {id} line={lnum} name={name} file={fname} 105 | 把 {name} 指定的标号放在文件 {fname} 的第 {lnum} 行。 106 | *:sign-fname* 107 | 文件 {fname} 必须已经在某个缓冲区调入,而且必须使用准确的文件 108 | 名。通配符,$ENV 和 ~ 不会被扩展,空白不会被转义。结尾的空白则 109 | 会忽略。 110 | 111 | 用 {id} 记住这个标号,将来可作进一步应用。{id} 必须是数值。用 112 | 户可以自行决定 {id} 在每个文件内是否唯一。(如果多次使用,撤销 113 | 放置就必须做多次,而且进行修改时未必尽如预期)。 114 | 115 | :sign place {id} line={lnum} name={name} buffer={nr} 116 | 同上,但指定缓冲区 {nr}。 117 | 118 | :sign place {id} name={name} file={fname} 119 | 把文件 {fname} 里用 {id} 记住的标号换成 {name} 指定的新标号。 120 | 参看关于 {fname} 的说明 |:sign-fname|。可用于不移动某个标号的 121 | 同时,更改它的显示方式 (例如,当调试器停在某个断点时)。 122 | 123 | :sign place {id} name={name} buffer={nr} 124 | 同上,但指定缓冲区 {nr}。 125 | 126 | 127 | 撤 销 放 置 标 号 *:sign-unplace* *E159* 128 | 129 | :sign unplace {id} file={fname} 130 | 从文件 {fname} 里撤销已放置的标号 {id} 的放置。 131 | 参看关于 {fname} 的说明 |:sign-fname|。 132 | 133 | :sign unplace {id} buffer={nr} 134 | 同上,但指定缓冲区 {nr}。 135 | 136 | :sign unplace {id} 137 | 撤销所有文件里出现的 {id} 标号的放置。 138 | 139 | :sign unplace * 140 | 撤销所有标号的放置。 141 | 142 | :sign unplace 143 | 撤销光标所在标号的放置。 144 | 145 | 146 | 列 出 放 置 标 号 147 | 148 | :sign place file={fname} 149 | 列出文件 {fname} 里所有放置的标号。 150 | 参看关于 {fname} 的说明 |:sign-fname|。 151 | 152 | :sign place buffer={nr} 153 | 列出缓冲区 {nr} 里所有放置的标号。 154 | 155 | :sign place 列出所有文件里放置的标号。 156 | 157 | 158 | 跳 到 标 号 *:sign-jump* *E157* 159 | 160 | :sign jump {id} file={fname} 161 | 打开文件 {fname} 或者跳转到包含 {fname} 的窗口并把光标设在标号 162 | {id} 所在的位置。 163 | 参看关于 {fname} 的说明 |:sign-fname|。 164 | 如果此文件不在窗口显示但当前文件又不能被放弃 |abandon|,此动作 165 | 失败。 166 | 167 | :sign jump {id} buffer={nr} 168 | 同上,但指定缓冲区 {nr}。 169 | 170 | vim:tw=78:ts=8:ft=help:norl: 171 | -------------------------------------------------------------------------------- /doc/sponsor.cnx: -------------------------------------------------------------------------------- 1 | *sponsor.txt* For Vim version 7.2. 最后更新:2008年4月 2 | 3 | 4 | VIM 参 考 手 册 作者:Bram Moolenaar 5 | 译者:Dasn, tocer 6 | http://vimcdoc.sf.net 7 | 8 | 9 | 10 | 赞 助 VIM 的 开 发 *sponsor* 11 | 12 | 修正程序中的漏洞和给程序增加新的功能需要付出很多时间和辛劳。为了表明你对这份努 13 | 力的感谢,而且激励 Bram 和其他人继续开发 Vim,请您考虑资助一下。 14 | 15 | 自从 Bram 恢复为全职工作以来,捐款将用于帮助乌干达的儿童。参见 |uganda|。但同 16 | 时,捐款将激励 Bram 继续开发 Vim。 17 | 18 | 有关赞助的最新消息请访问 Vim 网站: 19 | 20 | http://www.vim.org/sponsor/ 21 | 22 | 更多的说明可以在 |sponsor-faq| 里找到。 23 | 24 | 25 | VIM 的 注 册 用 户 *register* 26 | 27 | 您可以通过资助至少 10 欧元的方式成为 Vim 的注册用户。这与赞助 Vim 类似,参见上 28 | 面的 |sponsor|。增加注册这种方式主要是考虑到您的老板或会计可能更愿意去注册一个 29 | 软件,而不喜欢 "赞助" 和 "捐赠" 的方式。 30 | 31 | 更多的说明可以在 |register-faq| 里找到。 32 | 33 | 34 | 投 票 选 出 您 希 望 实 现 的 "功 能" *vote-for-features* 35 | 36 | 相对于普通用户,Vim 的注册用户和资助者的优势在于他们可以投票选出 Bram 下一步应 37 | 该解决的问题。投票是如何进行的呢? 38 | 39 | 1. 资助至少 10 欧元。参见下面的几种资助方式 |send-money|。 40 | 41 | 2. 您会收到一封带注册码的电邮。在 Vim 网站您的帐号页面里输入这个注册码。如果 42 | 您没有帐户,可以注册一个,过程很简单。 43 | 44 | 3. 这样您就可以在投票页面上投票了。在您输入注册码之后,您的帐户页面上会有一个 45 | 链接 (指向投票页面)。选票的有效期是两年。 46 | 47 | 4. 投票的结果出现在以下页面,这是大家都能读到的: 48 | http://www.vim.org/sponsor/vote_results.php 49 | 50 | 另外,一旦您资助的总额超过了 100 欧元,您的名字就会出现在 "Vim 英雄堂" (Vim 51 | hall of honour) 里:http://www.vim.org/sponsor/hall_of_honour.php,不过您需 52 | 要先在帐户页面里启动这项设置。 53 | 54 | 55 | 如 何 资 助 *send-money* 56 | 57 | 信用卡 使用 PayPal,参见 PayPal 网站: 58 | https://www.paypal.com/en_US/mrb/pal=XAC62PML3GF8Q 59 | 接收赞助的电邮地址是: 60 | donate@vim.org 61 | 接受注册的电邮地址是: 62 | register@vim.org 63 | 建议使用欧元,但也接受其它币种。 64 | 欧洲国家建议使用银行转帐,成本稍低。 65 | 66 | 其它方法 见 |iccf-donations|。 67 | 请在转帐的备注信息里注明 "Vim sponsor" 或 "Vim registration"。 68 | 如果您想要进行功能投票或者向别人说明自己是一名注册的 Vim 用户 69 | 或赞助者,那么请给我发电邮说明您资助的数额。 70 | 71 | 现金 少量现金可以通过普通的信件邮寄。把钱用东西包好,让别人从外面看 72 | 不出来。如果您想要进行功能投票或者向别人说明自己是一名注册的 73 | Vim 用户或赞助者,那么请同时写下您的电邮地址。 74 | 75 | 您可以使用下面的永久地址: 76 | Bram Moolenaar 77 | Finsterruetihof 1 78 | 8134 Adliswil 79 | Switzerland 80 | 81 | 82 | 83 | 常 见 问 题 解 答 *sponsor-faq* *register-faq* 84 | 85 | 为什么我应该资助? 86 | 87 | 如果没有您对 Vim 工作的欣赏,Bram 不会这么有动力修正漏洞并增加新功能。他会考虑 88 | 干点别的。 89 | 90 | 91 | 我应该资助多少数额? 92 | 93 | 这取决于您。您多给一些,就可以救助更多的儿童。下面的建议可供参考,个人用户在家 94 | 里应用:每年 10 欧元。专业应用:每年 30 欧元。至少要资助 10 欧元才能进行功能投 95 | 票。 96 | 97 | 98 | 我能得到什么回报? 99 | 100 | 每一个资助了至少 10 欧元的注册用户和赞助者,都可以为自己需要的功能投票。选出的 101 | 这些功能会被优先考虑在 Vim 中实现。投票的有效期是两年。资助的数额越多,您的选 102 | 票的点数越多 |votes-counted|。 103 | 104 | 如果助的数额总数超过了 100 欧元,您的名字会出现在 Vim 网站的 "Vim 英雄堂"。但 105 | 是必须在您的帐户页面上启用这项功能。您也可以选择您的资助数额是否可见。 106 | 107 | 108 | 我怎样成为 Vim 的赞助者或 Vim 的 注册用户? 109 | 110 | 通过上面 |send-money| 解释的方法进行资助,并写上您的电邮地址。钱款收到之后,您 111 | 会收到一个唯一的注册码。这个注册码可以被用来激活您在 Vim 网站上的帐户的投票功 112 | 能。您将会得到一个额外的用来投票的页面,并且可以选择您的捐助是否可见。在 "我的 113 | 帐户" ("My Account") 里有一个链接指向那个页面。 114 | 115 | 116 | 赞助和注册有什么不同? 117 | 118 | 名字不同。如果您的老板不喜欢 "赞助" 或 "捐赠",那就用 "注册" 的形式。结果是一 119 | 样的。 120 | 121 | 122 | 我应当如何汇款? 123 | 124 | 参见:|send-money|。关注网站以获得最新消息: 125 | http://www.vim.org/sponsor/ 126 | 127 | 128 | 为什么你不用 SourceForge 的捐赠系统? 129 | 130 | SourceForge 会把 5% 的捐赠留给他们自己。如果您想支持 SourceForge,可以直接资助 131 | 他们。 132 | 133 | 134 | 我付不起钱,可以继续使用 Vim 么? 135 | 136 | 可以。 137 | 138 | 139 | 我没有注册 Vim,我能使用全部的功能吗? 140 | 141 | 可以。 142 | 143 | 144 | 我发现了一个漏洞 (bug),我必须注册才能报告么? 145 | 146 | 不需要。您永远可以提供改进 Vim 的建议。发表改进的意见请使用开发者邮件列表 147 | |maillist|,报告漏洞参见 |bugs|。 148 | 149 | 150 | 选票是如何统计的? *votes-counted* 151 | 152 | 当您资助了 10 欧元或更多时,您可以投票。您至多可以投十票。可以在一个选项上多次 153 | 投票,以便给它更多的点数。您还可以投三次反对票,以负点数计。 154 | 155 | 当您资助的数额多于 30 欧元,您的点数会翻番。超过 100 欧元,点数是原来的四倍, 156 | 超过 300 欧元变成六倍,1000 欧元以上十倍。 157 | 158 | 159 | 我能更改自己的投票吗? 160 | 161 | 在您资助之后的两年时间里,您可以在任何您喜欢的时间更改您的选票。选票的点数将立 162 | 即生效。 163 | 164 | 165 | 我能增加投票的项目么? 166 | 167 | 您无法直接增加。您可以向 Bram 建议。他将考虑把您的提议加进去。 168 | 169 | 170 | 关于慈善软件? 171 | 172 | 目前,Vim 的资助总是到乌干达 |uganda|。不论您赞助 Vim 还是 ICCF 都是一样。不过 173 | 赞助 Vim,您同时可以对新特性投票。 174 | 175 | 176 | 我已经捐了 $$$,那么请加入 XYZ 新功能! 177 | 178 | Bram 的工作和您的捐助没有直接的关系。否则,就变成了您为 Bram 的工作付钱,而我 179 | 们应该为这些捐助缴税。如果您想雇 Bram 做一些别的工作,直接和他联系,请不要使用 180 | 捐助系统。 181 | 182 | 183 | 捐助可以免税么? 184 | 185 | 这取决于您的国家。赞助乌干达 |Uganda| 的儿童在荷兰、德国、加拿大,还有美国是免 186 | 税的。见 ICCF 的网站 http://iccf-holland.org/donate.html。您可以发送电邮告知 187 | Bram,让他知道您的捐献是因为使用 Vim 的结果。 188 | 189 | 190 | 你能寄给我发票么? 191 | 192 | 对不起,因为您捐助的金钱和我们完成的工作并没有关联。但寄收据是可以的。 193 | 194 | 195 | vim:tw=78:ts=8:ft=help:norl: 196 | -------------------------------------------------------------------------------- /doc/tags: -------------------------------------------------------------------------------- 1 | WinManagerFileEdit winmanager.txt /*WinManagerFileEdit* 2 | WinManagerForceReSize winmanager.txt /*WinManagerForceReSize* 3 | WinManagerResumeAUs winmanager.txt /*WinManagerResumeAUs* 4 | WinManagerSuspendAUs winmanager.txt /*WinManagerSuspendAUs* 5 | bufexplorer bufexplorer.txt /*bufexplorer* 6 | bufexplorer-changelog bufexplorer.txt /*bufexplorer-changelog* 7 | bufexplorer-credits bufexplorer.txt /*bufexplorer-credits* 8 | bufexplorer-customization bufexplorer.txt /*bufexplorer-customization* 9 | bufexplorer-installation bufexplorer.txt /*bufexplorer-installation* 10 | bufexplorer-todo bufexplorer.txt /*bufexplorer-todo* 11 | bufexplorer-usage bufexplorer.txt /*bufexplorer-usage* 12 | bufexplorer.txt bufexplorer.txt /*bufexplorer.txt* 13 | buffer-explorer bufexplorer.txt /*buffer-explorer* 14 | g:bufExplorerDefaultHelp bufexplorer.txt /*g:bufExplorerDefaultHelp* 15 | g:bufExplorerDetailedHelp bufexplorer.txt /*g:bufExplorerDetailedHelp* 16 | g:bufExplorerFindActive bufexplorer.txt /*g:bufExplorerFindActive* 17 | g:bufExplorerReverseSort bufexplorer.txt /*g:bufExplorerReverseSort* 18 | g:bufExplorerShowDirectories bufexplorer.txt /*g:bufExplorerShowDirectories* 19 | g:bufExplorerShowRelativePath bufexplorer.txt /*g:bufExplorerShowRelativePath* 20 | g:bufExplorerShowUnlisted bufexplorer.txt /*g:bufExplorerShowUnlisted* 21 | g:bufExplorerSortBy bufexplorer.txt /*g:bufExplorerSortBy* 22 | g:bufExplorerSplitBelow bufexplorer.txt /*g:bufExplorerSplitBelow* 23 | g:bufExplorerSplitOutPathName bufexplorer.txt /*g:bufExplorerSplitOutPathName* 24 | g:bufExplorerSplitRight bufexplorer.txt /*g:bufExplorerSplitRight* 25 | winmanager winmanager.txt /*winmanager* 26 | winmanager-adding winmanager.txt /*winmanager-adding* 27 | winmanager-bufexplorer-settings winmanager.txt /*winmanager-bufexplorer-settings* 28 | winmanager-bug winmanager.txt /*winmanager-bug* 29 | winmanager-commands winmanager.txt /*winmanager-commands* 30 | winmanager-customizing winmanager.txt /*winmanager-customizing* 31 | winmanager-details winmanager.txt /*winmanager-details* 32 | winmanager-fileexplorer-settings winmanager.txt /*winmanager-fileexplorer-settings* 33 | winmanager-hook-isvalid winmanager.txt /*winmanager-hook-isvalid* 34 | winmanager-hook-refresh winmanager.txt /*winmanager-hook-refresh* 35 | winmanager-hook-resize winmanager.txt /*winmanager-hook-resize* 36 | winmanager-hook-start winmanager.txt /*winmanager-hook-start* 37 | winmanager-hook-title winmanager.txt /*winmanager-hook-title* 38 | winmanager-hooks winmanager.txt /*winmanager-hooks* 39 | winmanager-installing winmanager.txt /*winmanager-installing* 40 | winmanager-overview winmanager.txt /*winmanager-overview* 41 | winmanager-plugin winmanager.txt /*winmanager-plugin* 42 | winmanager-settings winmanager.txt /*winmanager-settings* 43 | winmanager-thanks winmanager.txt /*winmanager-thanks* 44 | winmanager-updates winmanager.txt /*winmanager-updates* 45 | -------------------------------------------------------------------------------- /doc/uganda.cnx: -------------------------------------------------------------------------------- 1 | *uganda.txt* For Vim version 7.2. 最近更新:2008年4月 2 | 3 | 4 | VIM 参 考 手 册 作者: Bram Moolenaar 5 | 译者: Dasn 6 | http://vimcdoc.sf.net 7 | 8 | *uganda* *Uganda* *copying* *copyright* *license* 9 | 简介: 10 | *iccf* *ICCF* 11 | Vim 是慈善软件,您可以任意地使用和复制,但还是希望您能够捐助那些需要帮助的乌干 12 | 达儿童。请看下方的 |KCC|,或者通过下面几个镜像地址访问 ICCF 的主页以获取更多地 13 | 信息: 14 | 15 | http://iccf-holland.org/ 16 | http://www.vim.org/iccf/ 17 | http://www.iccf.nl/ 18 | 19 | 您也可以资助 Vim 的开发。Vim 的资助者可以对功能进行投票选举,见 |sponsor|。无 20 | 论哪种方式,钱都会送往乌干达的。 21 | 22 | Vim 的文档是以开放式发行许可证 (Open Publication License) 发布的,见 23 | |manual-copyright|。 24 | 25 | === 许可证开始 === 26 | (译者注: 本翻译只供参考。我们不承担任何错漏之处引起的法律责任。VIM 许可证必须 27 | 以英文形式完整出现。如有疑义,一律以英文原文为准。) 28 | 29 | VIM 许可证 30 | 31 | I) 可以任意发布没有修改的 Vim 的拷贝,但是必须保证包含本许可证。您也可以发布 32 | 未经修改的部分 Vim,同样也必须包含这份许可证。发布由未经修改的 Vim 源代码 33 | 所编译出的 Vim 可执行文件,外加您自己的应用实例和 Vim 脚本也是允许的。 34 | 35 | II) 在满足以下全部四个条件的前提下,您可以发布经过修改 (或扩充) 的 Vim 版本, 36 | 包括可执行文件 和/或 源代码: 37 | 1) 本许可证必须包含在内,并且不能被修改。 38 | 2) 经过修改的 Vim 必须以下述五种方式之一发布: 39 | a) 如果您本人对 Vim 做了改动,您必须在发布版本里清楚地说明如何与您联系。 40 | 当 Vim 的维护者 (以任何方式) 向您索取您所发布的 Vim 时,您必须把所做 41 | 的改动包括源代码无偿地提供出来。维护者保留把这些改动加入 Vim 正式版本 42 | 的权利。至于维护者怎样处理这些改动,以及用什么许可证发布,可以协商。 43 | 如果没有协商,那么,本许可证,或者它更新的版本,同样适用于您做出的改 44 | 动。Vim 现在的维护者是 Bram Moolenaar 。如果维护者发生 45 | 变动,会在合适的地方 (很可能是 vim.sf.net、www.vim.org 和/或 46 | comp.editors) 公布,当完全不能与维护者联系时,发送变更的约定自动终 47 | 止。一但维护者确认收到了您所做的修改,您就不必再次发送了。 48 | 49 | b) 如果您得到的是一个修改过的 Vim,并且它是在条件 a) 下发布的,那么您可 50 | 以不加改动地在条件 I) 下发布它;如果您又做了额外的改动,则这些改动受 51 | 到 a) 款条文的约束。 52 | 53 | c) 在您发布的经过修改的 Vim 的每一份拷贝里,提供所有的变更部分,包括源代 54 | 码。提供的形式可以采用上下文风格的差异比较记录 (context diff)。您可以 55 | 为添加的新代码选择许可证,但是这些更改和为其选择的许可证不能限制他人 56 | 对 Vim 正式版本作出自己的改动。 57 | 58 | d) 在满足以下全部三个条件的前提下,您可以继续发布带有条件 c) 所提及之变 59 | 更的经过修改的 Vim,而不必在发布时提供更改部分的源代码: 60 | -这些变更所附带的许可证允许您把这些变更无偿地并且没有任何限制地提供 61 | 给 Vim 的维护者,而且允许 Vim 的维护者无偿地并且没有任何限制地把这 62 | 些更改加入到 Vim 的正式版本中。 63 | -从您最后一次发布更改的 Vim 之日起,您要保存这些改动至少三年时间。在 64 | 这期间,维护者或别人 (以任何方式) 向您要求提供这些变更时,您必须提 65 | 供给他。 66 | -您要在发布版本中清楚地说明如何与您联系,这个联系方式必须保证自最后 67 | 一次发布相应的经过修改的 Vim 之日起至少三年有效,或尽可能长。 68 | e) 当这些变更以 GPL (GNU General Public License,GNU 通用公共许可证) 发 69 | 布时,您可以在 GPL 版本 2,或更高版本的 GPL 下发布修改过的 Vim。 70 | 3) 必须添加一条改动的信息。至少要放在 "version" 命令的输出和启动画面里,好 71 | 让用户知道自己用的是一个修改过的 Vim。当以 2)e) 条件发布时,只有不与变 72 | 更适用的许可证冲突,这个信息的添加才是必要的。 73 | 4) 在 2)a) 和 2)d) 条件里要求的联系方式不能随便更改或删除,除非是作者自己 74 | 作出的更正。 75 | 76 | III) 如果您发布一个更改过的 Vim,强烈建议您对变更部分使用 Vim 的许可证,并且对 77 | 维护者提供变更部分并开放源代码。最好的方式是通过电子邮件或者把文件放到服 78 | 务器上,通过电子邮件传送 URL。如果只修改了很少的部分 (例如,只是一个修改 79 | 过的 Makefile),那么传送一个上下文风格的差异比较记录 (context diff) 就可 80 | 以了。电子邮件的地址是 81 | 82 | IV) 不允许从 Vim 的源代码的发行版本或其中部分的源代码里删除本许可证,即使来自 83 | 更过过的版本也是如此。您可能想用这份许可证代替以前版本的 Vim 里的许可证, 84 | 这可以由您自行决定。 85 | 86 | === 许可证结束 === 87 | 88 | 备注: 89 | 90 | -如果您在 Vim 中找到了乐趣,请阅读剩下的部分,并且考虑一下是不是可以帮助乌干 91 | 达的儿童。用这种方式来表达您的喜悦之情。 92 | 93 | -如果您想更好地支持 Vim 的开发工作,请考虑成为一名 |sponsor|。无论哪种方式, 94 | 钱都会送往乌干达的。 95 | 96 | -Richard Stallman 说,Vim 的许可证与 GNU GPL 兼容。在他看过之后,我做过很少改 97 | 动,但这不应该有什么影响。 98 | 99 | -如果您在连接时所用的库是以 GPL 发放的,那么即使您没有修改 Vim,未来的发布版 100 | 本也必须采用 GPL 许可证。 101 | 102 | -一旦一项变更以 GPL 发放,那么这使得以后所有的改动都以 GPL 或与 GPL 兼容的许 103 | 可证发放。 104 | 105 | -如果您发布一个经过修改的 Vim,您可以在 "configure" 的 "--with-modified-by" 106 | 参数里加入您的名字和联系方式,或者直接修改宏 MODIFIED_BY。 107 | 108 | ============================================================================== 109 | Kibaale 儿童中心 *kcc* *Kibaale* *charity* 110 | 111 | Kibaale 儿童中心 (Kibaale Children's Centre 简称 KCC) 位于 Kibaale。Kibaale 是 112 | 东非乌干达南部的一个小镇,靠近坦桑尼亚。这里属于 Rakai 地区。大多数人是农民。 113 | 虽然人们很穷,但是食物很充足。这是世界上受艾滋病影响最严重的地区,有人说这里是 114 | 艾滋病的发源地。据估计,有 10% - 30% 的乌干达人是 HIV (人类免疫缺陷病毒,即艾 115 | 滋病病毒。译者) 的携带者。由于父母双亡,这里有许多孤儿。在这个仅有 35 万人口地 116 | 区,却有大约 6 万儿童失去了双亲或单亲,而且这种状况还在继续。 117 | 118 | 孩子们需要很多帮助。KCC 一直很努力地提供一些帮助,比如: 食物、医疗和教育。食物 119 | 和医疗使他们保持健康,而教育可以让他们在以后的生活里照顾自己。KCC 是一个以基督 120 | 教为基础的组织,但是他们为任何宗教信仰的孩子提供帮助。 121 | 122 | 解决问题的关键是这一地区的教育。然而在 Idi Amin 总统执政期间以及后来的国内战争 123 | 的几年时间里,这一问题被忽视了。现在政局已经稳定,孩子们和他们的父母有必要学会 124 | 怎样照顾自己,以及如何避免感染。饥饿的人和生病的人也同样需要帮助,但我们最主要 125 | 的目的是让他们远离疾病,教他们怎样种植健康的食物。 126 | 127 | 大多数孤儿都住在亲戚家里,由叔叔和稍大一点的姐姐照顾他们。因为家庭很大,所以收 128 | 入 (即使有的话也) 很少。一个孩子如果能得到健康的食物就很幸运了。衣服、医疗、受 129 | 教育,这些都是奢望。于是,为了帮助这些可怜的孩子,一套捐助程序启动了。一个孩子 130 | 可以通过人们的捐助来收养。每月捐助几美元,由 KCC 来管理,就可以给孩子们生活必 131 | 需品,保持健康,以及让他们上学。KCC 还会做所有其它对孩子和抚养他们的家庭有必要 132 | 的事情。 133 | 134 | 除了直接帮助孩子外,孩子们的成长环境也有待改善。KCC 帮助学校改进他们的教学方 135 | 法。在中心有一个示范学校,老师们可以在那里得到培训。同时,也进行医疗健康的人员 136 | 培训,展开卫生教育活动,每个家庭还被鼓励建造合适的洗手间。我帮忙建设了生产水泥 137 | 板的地方,水泥板可以用来做一个很好的洗手间。它们的出售价格低于成本价。 138 | 139 | 我们还建了一个小诊所,可以给孩子和他们的家庭提供一些医疗帮助,如果需要,提供病 140 | 人转往医院的交通工具。接种疫苗的程序也已经启动,传染病肆虐的时候也可以提供帮助 141 | (麻疹和霍乱曾经是一个问题)。 142 | *donate* 143 | 从 1994 年夏天到 1995 年夏天,我作为志愿者在中心工作了整整一年的时间。其间,我 144 | 帮助参与了中心的扩建,并从事水和卫生设备方面的工作。我觉得 KCC 所提供的这些帮 145 | 助真的是很有用。我回到荷兰后,还想继续支持 KCC。于是我筹措资金组织了这个捐助项 146 | 目。请考虑下面几种捐助方式: 147 | 148 | 1、捐助一个读小学的孩子: 每月 17 欧元 (或更多)。 149 | 2、捐助一个读中学的孩子: 每月 25 欧元 (或更多)。 150 | 3、捐助诊所: 每月或每季度,数额不限。 151 | 4、一次性捐赠。 152 | 153 | 相对于其它资助儿童的组织,这笔钱的数额相对很低。这是因为款项直接进入中心,其中 154 | 不到 5% 的捐款用于管理,对于一个小型的志愿者组织来说,做到这一点并不难。如果您 155 | 想捐助一名儿童,那么您应该有至少捐助一年的准备。 156 | 157 | 您怎么知道这些钱用到了该用的地方?首先,以我个人 (Vim 的作者) 的名义向您保证。 158 | 我信任在中心工作的人,并且对他们个人非常了解。再者,中心是合作捐资建成的,受到 159 | 世界宣明会 (World Vision),保护儿童基金会 (Save the Children Fund) 和世界关注 160 | 儿童基金会 (International Child Care Fund) 的审视。我们几乎每年都自费到中心去 161 | 查看进展状况,我先后在 1996、1998、2000、2001 和 2003 年访问过中心,在 ICCF 的 162 | 网站上有相关报道。 163 | 164 | 如果您还有别的问题,请发送电邮至: 。 165 | 166 | 中心的地址: 167 | Kibaale Children's Centre 168 | p.o. box 1658 169 | Masaka, Uganda, East Africa 170 | 171 | 捐资地址: *iccf-donations* 172 | 173 | 查看 ICCF 的网站以获取最新的信息!ICCF 的 URL 可以参见: |iccf| 174 | 175 | 176 | 美国: 可以使用下面提到的方法。 177 | 很不幸,寄支票给 Nehemiah Group Outreach Society (NGOS) 不再可 178 | 行了。我们在寻找其它能给你 IRS 纳税收据的方法。 179 | 如要捐助儿童,请洽加拿大的 KCF (见下),可寄美国支票到他们那 180 | 里,以减少转账的开销。 181 | 182 | 加拿大: 联系位于加拿大萨里 (Surrey) 市的 Kibaale 儿童基金会 (Kibaale 183 | Children's Fund,简称 KCF)。 184 | 他们会接待 Kibaale 儿童在加拿大的捐助者。KCF 把 100% 的钱汇到 185 | 乌干达的项目中。您可以直接给他们汇款一次性的捐赠。捐赠之后请通 186 | 知我,好让我知道什么样的捐赠与 Vim 有关。请向 KCF 询问捐助的相 187 | 关事宜。 188 | Kibaale Children's Fund c/o Pacific Academy 189 | 10238-168 Street 190 | Surrey, B.C. V4N 1Z4 191 | Canada 192 | Phone: 604-581-5353 193 | 如果您向 KCF 捐赠,您会收到一份纳税收据,可以在报税的时候把它 194 | 和报税单一并交上。 195 | 196 | 荷兰: 请汇款至在 Venlo 的 "Stichting ICCF Holland" 的账户,如果您住 197 | 在荷兰,可以减税。 198 | Postbank, nr. 4548774 199 | 200 | 德国: 可以在捐赠时得到税款返还。查阅 ICCF 网站获取更多的信息: 201 | http://iccf-holland.org/germany.html 202 | 203 | 世界其它地方: 通过邮政汇票。这应该在任何国家都可以,主要从邮局开出。我的名字 204 | (护照上的名字) 是: "Abraham Moolenaar"。如果有可能,请兑换成欧 205 | 元。 206 | 207 | 欧洲的其它国家: 请尽量通过银行汇款,您的银行应有用于此目的的表格。swift 代码和 208 | IBAN 号见下方的 "其它" 一节。 209 | 其它方式应该也可以,请询问提供捐助信息的单位。 210 | 211 | 信用卡: 您可以通过 PayPal 来使用信用卡进行捐资,这是 Internet 上应用最 212 | 广的一个结帐系统,用起来很简单。下面的链接提供详情: 213 | https://www.paypal.com/en_US/mrb/pal=XAC62PML3GF8Q 214 | 捐款的电邮地址: 215 | Bram@iccf-holland.org 216 | 如果多于 400 欧元 (500 美元),建议使用支票。 217 | 218 | 其它: 请汇款至下面几个帐户之一: 219 | Postbank, account 4548774 220 | Swift code: INGB NL 2A 221 | IBAN: NL47 PSTB 0004 5487 74 222 | 收款人的名字是 "stichting ICCF Holland", Venlo 223 | 如果不行,可用: 224 | Rabobank Venlo, account 3765.05.117 225 | Swift code: RABO NL 2U 226 | 收款人的名字是 "Bram Moolenaar", Venlo 227 | 否则,请用支票的形式 (美元或欧元) 汇到下面的地址。最小数额: 228 | 70 美元 (抱歉,我的银行不接收更小数额的国外支票)。 229 | 230 | 支票请汇到下述地址: 231 | stichting ICCF Holland 232 | Bram Moolenaar 233 | Finsterruetihof 1 234 | 8134 Adliswil 235 | Switzerland 236 | 237 | 该地址应该长期有效。 238 | 239 | vim:tw=78:ts=8:ft=help:norl: 240 | -------------------------------------------------------------------------------- /doc/undo.cnx: -------------------------------------------------------------------------------- 1 | *undo.txt* For Vim version 7.2. 最后更改:2006.07.26 2 | 3 | 4 | Vim 参考手册 作者:Bram Moolenaar 5 | (译者: jwdu, tocer http://vimcdoc.sf.net) 6 | 7 | 撤销和重做 *undo-redo* 8 | 9 | 在用户手册的 |02.5| 节对它们的基本操作有解释。 10 | 11 | 1. 撤销和重做操作的命令 |undo-commands| 12 | 2. 撤销操作的两种方法 |undo-two-ways| 13 | 3. 撤销块 |undo-blocks| 14 | 4. 撤销分支 |undo-branches| 15 | 5. 撤销操作的解释 |undo-remarks| 16 | 17 | ============================================================================== 18 | 1. 撤销和重做命令 *undo-commands* 19 | 20 | 或 *undo* ** *u* 21 | u 撤销 [count] 次更改。 {Vi: 仅有一级} 22 | 23 | *:u* *:un* *:undo* 24 | :u[ndo] 撤销一次更改。 {Vi: 仅有一级} 25 | 26 | :u[ndo] {N} 转到改变号 {N} 之后。{N} 的含义参见 |undo-branches|。 27 | {Vi 无此功能} 28 | 29 | *CTRL-R* 30 | CTRL-R 重做 [count] 次被撤销的更改。 {Vi: 刷新屏幕} 31 | 32 | *:red* *:redo* *redo* 33 | :red[o] 重做一个被撤销的更改。 {Vi: 没有 redo} 34 | 35 | *U* 36 | U 撤销最近对特定行所作的一系列更改。 37 | {Vi: 仅当这些修改不超出该行的范围} 38 | 39 | 由于最近所作的更改是被记住的,因此,你可以应用上面的撤销和重做命令把文件倒转到 40 | 你所作每次更改以前的状态。当然,你也可以重新应用这些修改,把文件重做到执行撤销 41 | 操作以前的状态。 42 | 43 | 对于撤销/重做 (undo/redo) 来说,"U" 命令和其他命令是同等对待的。所以 "u" 可以 44 | 撤销一个 "U" 命令、'CTRL-R' 也可以重做对 "U" 命令的撤销。当 "U"、"u" 和 45 | 'CTRL-R' 三个命令混合使用时,你将注意到 "U" 命令决意将被该行还原到前一个 "U" 46 | 命令之前的状态。这或许会令你困惑。多试试,你会习惯的。 47 | "U" 命令总是把缓冲区标记为已改变。即使它把修改过的缓冲区重做到未改变的状态也是 48 | 如此。为此,只有使用 "u" 命令,才能令缓冲区正确地回复到未改变的标记。 49 | 50 | ============================================================================== 51 | 2. 撤销操作的两种方法 *undo-two-ways* 52 | 53 | 撤销和重做的工作模式依赖于 'cpoptions' 中 'u' 标志位。这里有两种模式,Vim 模式 54 | (不包含 'u') 和 Vi-兼容模式 (包含 'u')。在 Vim 模式下,"uu" 命令撤销两次改变, 55 | 在 Vi-兼容模式下,"uu" 命令什么也不做 (撤销第一次撤销)。 56 | 57 | 不包含 'u' 的 Vim 模式: 58 | 及时的撤销命令可以回到先前的状态。你也可以使用重做命令再次前进。不过,如果在撤 59 | 销命令后你做了一个新的改变,重做上次的撤销便不再可能。 60 | 61 | 包含 'u' 的 Vi-兼容模式: 62 | 撤销命令撤销包含以前的撤销命令在内的任何更改。重做命令重复前一个撤销命令。但它 63 | _不_用来重复改变命令。为此请用 "." 命令。 64 | 65 | 举例 Vim 模式 Vi-兼容模式 ~ 66 | "uu" 两次撤销 空操作 67 | "u CTRL-R" 空操作 两次撤销 68 | 69 | 原理: Nvi 使用 "." 命令而不是 CTRL-R。不幸的是,这不是 Vi 兼容的。例如 70 | "dwdwu." 命令,在 Vi 中删除两个词,但在 Nvi 中,它什么也不做。 71 | 72 | ============================================================================== 73 | 3. 撤销块 *undo-blocks* 74 | 75 | 单个 undo 命令通常撤掉一个输入的命令,不论这个命令造成多少改变。这个可以撤销的 76 | 改变序列构成了一个撤销块。所以如果键入的命令调用一个函数,那么在这个函数中的所 77 | 有命令全部被撤销。 78 | 79 | 如果你想编写一个函数或脚本,它不包含新的可撤销之改变,而合并到之前的改变中,用 80 | 以下命令: 81 | 82 | *:undoj* *:undojoin* *E790* 83 | :undoj[oin] 把其后的改变和以前的撤销块进行合并。 84 | 警告: 小心使用。它会阻止用户合理地撤销改变。不要在撤销 85 | 或重做后使用。 86 | {Vi 无此功能} 87 | 88 | 这最适用于在改变的过程中需要提示用户的场合。例如调用 |getchar()| 的函数。确保 89 | 在这之前有一个相关的必须与之合并的改变。 90 | 91 | 这条命令不能单独工作,因为下一个键击会再次造成新改变。但你可以这么做: > 92 | 93 | :undojoin | delete 94 | 95 | 在此之后,"u" 命令会同时撤销 delete 命令和前一次改变。 96 | 97 | ============================================================================== 98 | 4. 撤销分支 *undo-branches* *undo-tree* 99 | 100 | 上面我们只讨论了单线的撤销/重做。但你也可以进行分支。考虑你先撤销了若干改变, 101 | 然后又进行了一些其它的改变。此时,被撤销的改变就成为一个分支。下面的命令使你能 102 | 够到达那个分支。 103 | 104 | 这在用户手册中有解释: |usr_32.txt|。 105 | 106 | *:undol* *:undolist* 107 | :undol[ist] 列出改变树的所有叶结点。例如: 108 | number changes time ~ 109 | 4 10 10:34:11 110 | 18 4 11:01:46 111 | 112 | "number" 列是改变号。这个编号持续增加,用于标识特定可 113 | 撤销的改变,参见 |:undo|。 114 | "changes" 列是树的根结点到此叶结点所需的改变数目。 115 | "time" 列是此改变发生的时间。 116 | 117 | *g-* 118 | g- 转到较早的文本状态。如果带计数,重复那么多次。 119 | {Vi 无此功能} 120 | *:ea* *:earlier* 121 | :earlier {count} 转到 {count} 次较早的文本状态。 122 | :earlier {N}s 转到大约 {N} 秒钟之前的较早的文本状态。 123 | :earlier {N}m 转到大约 {N} 分钟之前的较早的文本状态。 124 | :earlier {N}h 转到大约 {N} 小时之前的较早的文本状态。 125 | 126 | *g+* 127 | g+ 转到较新的文本状态。如果带计数,重复那么多次。 128 | {Vi 无此功能} 129 | *:lat* *:later* 130 | :later {count} 转到 {count} 次较新的文本状态。 131 | :later {N}s 转到大约 {N} 秒钟之后的较新的文本状态。 132 | :later {N}m 转到大约 {N} 分钟之后的较新的文本状态。 133 | :later {N}h 转到大约 {N} 小时之后的较新的文本状态。 134 | 135 | 136 | 注意 如果由于 'undolevels' 选项,撤销信息被清空,那么文本状态将无法访问。 137 | 138 | 在不同时间点上移动的时候,不要奇怪一个时间点会同时发生多个改变。通过撤销树跳转 139 | 然后又做了新的改变后就会发生这种情况。 140 | 141 | 示 例 142 | 143 | 从这一行开始: 144 | one two three ~ 145 | 146 | 按三次 "x" 删除第一个单词: 147 | ne two three ~ 148 | e two three ~ 149 | two three ~ 150 | 151 | 现在按 "u" 三次撤销: 152 | e two three ~ 153 | ne two three ~ 154 | one two three ~ 155 | 156 | 按三次 "x" 删除第二个单词: 157 | one wo three ~ 158 | one o three ~ 159 | one three ~ 160 | 161 | 现在按 "g-" 三次撤销: 162 | one o three ~ 163 | one wo three ~ 164 | two three ~ 165 | 166 | 现在,回到第一个撤销分支,也就是在删除 "one" 之后。重复 "g-" 会回到原始文本: 167 | e two three ~ 168 | ne two three ~ 169 | one two three ~ 170 | 171 | 使用 ":later 1h" 跳到最后一次改变: 172 | one three ~ 173 | 174 | 使用 ":earlier 1h" 再次回到开始: 175 | one two three ~ 176 | 177 | 178 | 注意 使用 "u" 和 CTRL-R 无法得到全部可能的文本状态,但是重复 "g-" 和 "g+" 却可 179 | 以。 180 | 181 | ============================================================================== 182 | 5. 撤销操作的解释 *undo-remarks* 183 | 184 | 能记忆的最大改变次数由 'undolevels' 选项决定。如果它的值是零,我们总是运行在 185 | Vi-兼容模式。如果它的值是负的,任何撤销都是不可能的。这只有在内存紧张的时候适 186 | 用。 187 | 188 | 当前缓冲区的位置标记 ('a 至 'z) 随文本一起被保存和复原。{Vi 的做法稍有不同} 189 | 190 | 当所有的改变都被撤销时,缓冲区被标记为未改变。这时可以使用 ":q" 而不一定是 191 | ":q!" 退出 Vim 。{Vi 并非如此} 注意未改变是相对文件的最后写入而言的。在写入 192 | ":w" 后紧跟的撤销 "u",实际上改变了被写入以后缓冲区的状态。因此,此时缓冲区应 193 | 被视为已改变。 194 | 195 | 当使用手动 |folding| 时,折叠不会被保存和复原。只有完全发生折叠内部的改变才不 196 | 会影响该折叠,因为它开头和最后一行没有改变。 197 | 198 | 数字编号的寄存器也可以被用作撤销删除操作。你每一次删除文本,该文本被放在 "1 寄 199 | 存器中。同样的,"1 寄存器的内容被移到 "2 寄存器,依次类推。"9 寄存器的内容则会 200 | 丢失。现在,你可以通过命令 '"1P' 得到最近删除的文本。(如果被删除的内容来自最近 201 | 的删除或复制操作,'P' 或 'p' 同样也可得到你要的结果,因为他们会复制未命名寄存 202 | 器的内容)。使用 '"3P' 可以得到三个删除操作之前的文本。 203 | 204 | *redo-register* 205 | 如果你想得到多于一处被删除文本的内容,你可以使用重复命令 "." 一个特殊的特性: 206 | 它会递增所使用寄存器内的序号。所以,你如果先使用 ""1P" ,那么接下来的 "." 就意 207 | 味着 '"2P 。重复这样的操作,所有编号的寄存器都会被插入。 208 | 209 | 例如: 如果你用 'dd....' 删除了内容 (五行文本),那么用 '"1P....' 可以恢复之。 210 | 211 | 如果你不知道被删除的内容在哪一个寄存器,你可以用 |:display| 命令。还有一个方法 212 | 就是先试第一个寄存器 '"1P' ,如果不对,用 'u.' 命令。这将会移走第一次放进的内 213 | 容,然后在第二个寄存器上重复 put 命令。重复使用 'u.' 直到你得到想要的内容为 214 | 止。 215 | 216 | vim:tw=78:ts=8:ft=help:norl: 217 | -------------------------------------------------------------------------------- /doc/usr_01.cnx: -------------------------------------------------------------------------------- 1 | *usr_01.txt* For Vim version 7.2. 最近更新: 2008年6月 2 | 3 | VIM 用户手册 - 作者: Bram Moolenaar 4 | 译者:Nek_in http://vimcdoc.sf.net 5 | 6 | 关于本手册 7 | 8 | 本章介绍 vim 的手册本身。读者可以通过本章来了解本手册是如何解释 Vim 命令的。 9 | 10 | |01.1| 手册的两个部分 11 | |01.2| 安装了 Vim 之后 12 | |01.3| 教程使用说明 13 | |01.4| 版权声明 14 | 15 | 下一章:|usr_02.txt| Vim 初步 16 | 目录:|usr_toc.txt| 17 | 18 | ============================================================================== 19 | *01.1* 手册的两个部分 20 | 21 | Vim 的手册分成两个部分: 22 | 23 | 1. 用户手册 24 | 面向任务的使用说明书,由简入繁,能象书一样从头读到尾。 25 | 26 | 2. 参考手册 27 | 详细描述 Vim 的每一个命令的详细资料。 28 | 29 | 本手册使用的符号请参见:|notation| 30 | 31 | 32 | 跳 转 33 | 34 | 文本包含两部分内容之间的超级链接,允许你快速地在一个编辑任务的描述和它所涉及的 35 | 命令和选项的详细说明之间跳转。可以使用如下两个命令实现这个功能: 36 | 37 | 按 CTRL-] 跳转到当前光标下的单词的相关主题 38 | 按 CTRL-O 回跳 (重复这个操作可以回跳多次) 39 | 40 | 大部分链接放在两根竖线之间,如:|bar|。另外,'number' 形式的选项名,用双引号括 41 | 住的命令 ":write" 或者其它任何单词都可以用作一个超级链接。不妨做如下试验:把光 42 | 标移动到 CTRL-] 上,并按下 CTRL-]。 43 | 44 | 其它主题可以用 ":help" 找到,请参见 |help.txt|。 45 | 46 | ============================================================================== 47 | *01.2* 安装了 Vim 之后 48 | 49 | 本手册大部分内容都假定 Vim 已经被正常安装了。如果还没有,或者运行不正常 (例 50 | 如,找不到文件或 GUI 模式下菜单没有显示出来等)。请先阅读关于安装的章节: 51 | |usr_90.txt|。 52 | *not-compatible* 53 | 本手册还经常假定 Vim 运行在 Vi 兼容选项关闭的模式下。对大部分命令而言,这无关 54 | 紧要,但有时却是很重要的。例如,多级撤销 (undo) 功能就是这样。有一个简单的方法 55 | 可以保证你的 Vim 设置是正常的 - 拷贝 Vim 自带的 vimrc 范例。在 Vim 里进行操 56 | 作,你就无需知道这个文件在什么地方。不同系统的操作方法分别如下: 57 | 58 | 对于 Unix: > 59 | :!cp -i $VIMRUNTIME/vimrc_example.vim ~/.vimrc 60 | 对于 MS-DOS, MS-Windows, OS/2: > 61 | :!copy $VIMRUNTIME/vimrc_example.vim $VIM/_vimrc 62 | 对于 Amiga: > 63 | :!copy $VIMRUNTIME/vimrc_example.vim $VIM/.vimrc 64 | 65 | 如果这个文件已经存在,你最好备份一下。 66 | 67 | 现在启动 Vim,'compatible' 选项应该已经关闭。你可以用以下命令检查一下: 68 | > 69 | :set compatible? 70 | < 71 | 如果 Vim 报告 "nocompatible",则一切正常;如果返回 "compatible" 就有问题。这时 72 | 你需要检查一下为什么会出现这个问题。一种可能是 Vim 找不到你的配置文件。用如下 73 | 命令检查一下: 74 | > 75 | :scriptnames 76 | < 77 | 如果你的文件不在列表中,检查一下该文件的位置和文件名。如果它在列表中,那么一定 78 | 是还有某个地方把 'compatible' 选项设回来了。 79 | 80 | 参考 |vimrc| 和 |compatible-default| 可以获得更多信息。 81 | 82 | 备注: 83 | 本手册是关于普通形态的 Vim 的,Vim 还有一种形态叫 "evim" (easy vim), 84 | 那也是 Vim,不过被设置成 "点击并输入" 风格,就像 Notepad 一样。它总是 85 | 处于 "插入" 模式,感觉完全不同于通常形态下的 Vim。由于它比较简陋,将不 86 | 在本手册中描述。详细信息请参考 |evim-keys|。 87 | 88 | ============================================================================== 89 | *01.3* 教程使用说明 *tutor* *vimtutor* 90 | 91 | 除了阅读文字 (烦!),你还可以用 vimtutor (Vim 教程) 学习基本的 Vim 命令,这是 92 | 一个 30 分钟的教程,它能教会你大部分基本的 Vim 功能。 93 | 94 | 在 Unix 中,如果 Vim 安装正常,你可以从命令行上运行以下命令: 95 | > 96 | vimtutor 97 | < 98 | 在 MS-Windows 中,你可以在 Program/vim 菜单中找到这个命令,或者在 $VIMRUNTIME 99 | 目录中运行 vimtutor.bat 程序。 100 | 101 | 这个命令会建立一份教程文件的拷贝,你可以任意修改它而不用担心会损坏原始的文件。 102 | 这个教材有各种语言的版本。要检查你需要的版本是否可用,使用相应语言的双字母 103 | 缩写。例如,对于法语版本: 104 | > 105 | vimtutor fr 106 | < 107 | 在 Unix 上,如果你更喜欢 Vim 的 GUI 版本,可用 "gvimtutor" 或 "vimtutor -g" 来 108 | 代替 "vimtutor"。 109 | 110 | 对于 OpenVMS 而言,如果已经正确安装了 Vim,VMS 提示行上可以启动 vimtutor: > 111 | 112 | @VIM:vimtutor 113 | 114 | 也可以加入可选的双字母语言代码,同上。 115 | 116 | 117 | 在非 Unix 系统中,你还要做些工作: 118 | 119 | 1. 拷贝教程文件。你可以用 Vim 来完成这个工作 (Vim 知道文件的位置) 120 | > 121 | vim -u NONE -c 'e $VIMRUNTIME/tutor/tutor' -c 'w! TUTORCOPY' -c 'q' 122 | < 123 | 这个命令在当前路径下建立一个 "TUTORCOPY" 的文件。要使用其它语言的版本, 124 | 在文件名后加上双字母的语言缩写作为扩展名。对于法语: 125 | > 126 | vim -u NONE -c 'e $VIMRUNTIME/tutor/tutor.fr' -c 'w! TUTORCOPY' -c 'q' 127 | 128 | 2. 用 Vim 编辑这个被拷贝的文件 129 | > 130 | vim -u NONE -c "set nocp" TUTORCOPY 131 | < 132 | 其它几个参数用于保证 Vim 使用正确的模式启动。 133 | 134 | 3. 学习完成后删除临时拷贝文件 135 | > 136 | del TUTORCOPY 137 | < 138 | ============================================================================== 139 | *01.4* 版权声明 *manual-copyright* 140 | 141 | Vim 用户手册和参考手册的版权 (1988-2003) 归 Bram Moolenaar 所有。这份材料只可 142 | 以在符合开放出版物版权协议 (Open Publication License) 1.0 或以后版本的条件下发 143 | 布。这份协议的最新版本可以在如下地址上找到: 144 | http://opencontent.org/openpub/ 145 | 146 | 对此文档作出贡献的人员必须同意这份声明。 147 | *frombook* 148 | 这份文档的一部分来自 Steve Oualline 的《Vi IMproved - Vim》(New Riders出版, 149 | ISBN: 0735710015)。开放出版物版本协议同样适用于这本书。被选入的部分经过剪裁 150 | (例如去掉插图,根据 Vim 6.0 和之后的新特性进行修改,并修正一些错误)。某些部分 151 | 省略了 |frombook| 标记,这并不表示这些部分不是来自这本书。 152 | 153 | 非常感谢 Steve Oualline 和 New Riders 编写并出版了这本书并在 OPL 协议下发行 154 | 它!它对写这份手册起到了非常大的作用。它不只是提供了文字描述,还确定了这份手册 155 | 的基调和风格。 156 | 157 | 如果你通过销售这份手册赚了钱,我们强烈建议你把部分利润捐给乌干达的艾滋病受害 158 | 者。(参见 |iccf|) 159 | 160 | (译者注:这里是对原文协议的翻译,中文翻译的版权,请参阅 vimcdoc 的 LICENSE 文 161 | 件) 162 | ============================================================================== 163 | 164 | 下一章:|usr_02.txt| Vim 初步 165 | 166 | 版权:参见 |manual-copyright| vim:tw=78:ts=8:ft=help:norl: 167 | -------------------------------------------------------------------------------- /doc/usr_06.cnx: -------------------------------------------------------------------------------- 1 | *usr_06.txt* For Vim version 7.2. 最后修改:2006年5月 2 | 3 | Vim 用户手册 - Bram Moolenaar 4 | (译者:Nek_in http://vimcdoc.sf.net) 5 | 6 | 使用语法高亮 7 | 8 | 9 | 黑白的文字让人厌倦了,增加一些色彩能为你的文件带来生气。这不但看起来漂亮, 10 | 还能够提高你的工作效率。本章介绍如何使用不同颜色显示不同文本并把它打印出来。 11 | 12 | |06.1| 功能激活 13 | |06.2| 颜色显示不出来或者显示出错误的颜色怎么办? 14 | |06.3| 使用不同的颜色 15 | |06.4| 是否使用色彩 16 | |06.5| 带颜色打印 17 | |06.6| 深入阅读 18 | 19 | 下一章:|usr_07.txt| 编辑多个文件 20 | 前一章:|usr_05.txt| 选项设置 21 | 目录:|usr_toc.txt| 22 | 23 | ============================================================================== 24 | *06.1* 功能激活 25 | 26 | 一切从一个简单的命令开始: > 27 | 28 | :syntax enable 29 | 30 | 大多数情况下,这会让你的文件带上颜色。Vim 会自动检测文件的类型,并调用合适的语 31 | 法高亮。一下子注释变成蓝色,关键字变成褐色,而字符串变成红色了。这使你可以很容 32 | 易浏览整个文档。很快你就会发现,黑白的文本真的会降低你的效率! 33 | 34 | 如果你希望总能看到语法高亮,把 "syntax enable" 命令加入到 |vimrc| 文件中。 35 | 36 | 如果你想语法高亮只在支持色彩的终端中生效,你可以在 |vimrc| 文件中这样写: > 37 | 38 | if &t_Co > 1 39 | syntax enable 40 | endif 41 | 42 | 如果你只想在 GUI 版本中有效,可以把 ":syntax enable" 放入你的 |gvimrc| 文件。 43 | 44 | ============================================================================== 45 | *06.2* 颜色显示不出来或者显示出错误的颜色怎么办? 46 | 47 | 有很多因素会让你看不到颜色: 48 | 49 | - 你的终端不支持彩色。 50 | 这种情况下,Vim 会用粗体,斜体和下划线区分不同文字,但这不好看。你可能 51 | 会希望找一个支持彩色的终端。对于 Unix,我推荐 XFree86 项目的 xterm: 52 | |xfree-xterm|。 53 | 54 | - 你的终端其实支持颜色,可是 Vim 不知道。 55 | 确保你的 $TERM 设置正确。例如,当你使用一个支持彩色的 xterm 终端: > 56 | 57 | setenv TERM xterm-color 58 | < 59 | 或者 (基于你用的控制台终端) > 60 | 61 | TERM=xterm-color; export TERM 62 | < 63 | 终端名必须与你使用的终端一致。如果这还是不行,参考一下 |xterm-color|, 64 | 那里介绍了一些使 Vim 显示彩色的方法 (不仅是 xterm)。 65 | 66 | - 文件类型无法识别。 67 | Vim 不可能识别所有文件,而且有时很难说一个文件是什么类型的。试一下这个 68 | 命令: > 69 | 70 | :set filetype 71 | < 72 | 如果结果是 "filetype=",那么问题就是出在文件类型上了。你可以手工指定文 73 | 件类型: > 74 | 75 | :set filetype=fortran 76 | < 77 | 要知道哪些类型是有效的,查看一下 $VIMRUNTIME/syntax 目录。对于 GUI 版 78 | 本,你还可以使用 Syntax 菜单。设置文件类型也可以通过 |modeline|,这种 79 | 方式使得该文件每次被编辑时都被高亮。例如,下面这行可用于 Makefile (把 80 | 它放在接近文件首和文件末的地方) > 81 | 82 | # vim: syntax=make 83 | < 84 | 你可能知道怎么检测自己的文件类型,通常的方法是检查文件的扩展名 (就是点 85 | 后面的内容)。|new-filetype| 说明如何告知 Vim 进行那种文件类型的检查。 86 | 87 | - 你的文件类型没有语法高亮定义。 88 | 你可以找一个相似的文件类型并人工设置为那种类型。如果觉得不好,你可以自 89 | 己写一个,参见 |mysyntaxfile|。 90 | 91 | 92 | 或者颜色是错的: 93 | 94 | - 彩色的文字难以辨认。 95 | Vim 自动猜测你使用的背景色。如果是黑的 (或者其它深色的色彩),它会用浅 96 | 色作为前景色。如果是白的 (或者其它浅色),它会使用深色作为前景色。如果 97 | Vim 猜错了,文字就很难认了。要解决这个问题,设置一下 'background' 选 98 | 项。对于深色: > 99 | 100 | :set background=dark 101 | < 102 | 而对于浅色: > 103 | 104 | :set background=light 105 | < 106 | 这两个命令必须在 ":syntax enable" 命令前调用,否则不起作用。如果要在这 107 | 之后设置背景,可以再调用一下 ":syntax reset" 使得 Vim 重新进行缺省颜色 108 | 的设置。 109 | 110 | - 在自下往上滚屏的过程中颜色显示不对。 111 | Vim 在分析文本的时候不对整个文件进行处理,它只分析你要显示的部分。这 112 | 样能省不少时间,但也会因此带来错误。一个简单的修正方法是敲 CTRL-L。 113 | 或者往回滚动一下再回来。要彻底解决这个问题,请参见 |:syn-sync|。有些 114 | 语法定义文件有办法自己找到前面的内容,这可以参见相应的语法定义文件。 115 | 例如,|tex.vim| 中可以查到 Tex 语法定义。 116 | 117 | ============================================================================== 118 | *06.3* 使用不同颜色 *:syn-default-override* 119 | 120 | 如果你不喜欢默认的颜色方案,你可以选另一个色彩方案。在 GUI 版本中可以使用 121 | Edit/Color 菜单。你也可以使用这个命令: > 122 | 123 | :colorscheme evening 124 | 125 | "evening" 是色彩方案的名称。还有几种备选方案可以试一下。在 $VIMRUNTIME/colors 126 | 中可以找到这些方案。 127 | 128 | 等你确定了一种喜欢的色彩方案,可以把 ":colorscheme" 命令加到你的 |vimrc| 文件 129 | 中。 130 | 131 | 你可以自己编写色彩方案,方法如下: 132 | 133 | 1. 选择一种接近你理想的色彩方案。把这个文件拷贝到你自己的 Vim 目录中。在 134 | Unix 上,可以这样: > 135 | 136 | !mkdir ~/.vim/colors 137 | !cp $VIMRUNTIME/colors/morning.vim ~/.vim/colors/mine.vim 138 | < 139 | 在 Vim 中完成的好处是可以利用 $VIMRUNTIME 变量。 140 | 141 | 2. 编辑这个色彩方案,常用的有下面的这些条目: 142 | 143 | term 黑白终端的属性 144 | cterm 彩色终端的属性 145 | ctermfg 彩色终端的前景色 146 | ctermbg 彩色终端的背景色 147 | gui GUI 版本属性 148 | guifg GUI 版本的前景色 149 | guibg GUI 版本的背景色 150 | 151 | 例如,要用绿色显示注释: > 152 | 153 | :highlight Comment ctermfg=green guifg=green 154 | < 155 | 属性是 "bold" (粗体) 和 "underline" (下划线) 可以用于 "cterm" 和 "gui"。如 156 | 果你两个都想用,可以用 "bond,underline"。详细信息请参考 |:highlight| 命令。 157 | 158 | 3. 告诉 Vim 总使用你这个色彩方案。把如下语句加入你的 |vimrc| 中: > 159 | 160 | colorscheme mine 161 | 162 | 如果你要测试一下常用的色彩组合,用如下命令: > 163 | 164 | :runtime syntax/colortest.vim 165 | 166 | 这样你会看到不同的颜色组合。你可以很容易的看到哪一种可读性好而且漂亮。 167 | 168 | ============================================================================== 169 | *06.4* 是否使用色彩 170 | 171 | 使用色彩显示文本会影响效率。如果你觉得显示得很慢,可以临时关掉这个功能: > 172 | 173 | :syntax clear 174 | 175 | 当你开始编辑另一个文件 (或者同一个文件),色彩会重新生效。 176 | 177 | *:syn-off* 178 | 如果你要完全关闭这个功能: > 179 | 180 | :syntax off 181 | 182 | 这个命令会停止对所有缓冲区的所有语法高亮。 183 | 184 | *:syn-manual* 185 | 如果你想只对特定的文件采用语法高亮,可以使用这个命令: > 186 | 187 | :syntax manual 188 | 189 | 这个命令激活语法高亮功能,但不会在你开始编辑一个缓冲区时自动生效 (译者注:Vim 190 | 中,每个被打开的文件对应一个缓冲区,后面的章节中你会接触到这方面的内容)。要在 191 | 当前缓冲区中使用高亮,需要设置 'syntax' 选项: > 192 | 193 | :set syntax=ON 194 | < 195 | ============================================================================== 196 | *06.5* 带颜色打印 *syntax-printing* 197 | 198 | 在 MS-Windows 版本上,你可以用如下命令打印当前文件: > 199 | 200 | :hardcopy 201 | 202 | 这个命令会启动一个常见的打印对话框,你可以通过它选择打印机并作一些必要的设置。 203 | 如果你使用的是彩色打印机,那么打印出来的色彩将与你在 Vim 中看到的一样。但如果 204 | 你使用的是深色的背景,它的颜色会被适当调整,以便在白色地打印纸上看起来比较舒 205 | 服。 206 | 207 | 下面几个选项可以改变 Vim 的打印行为: 208 | 'printdevice' 209 | 'printheader' 210 | 'printfont' 211 | 'printoptions' 212 | 213 | 要仅打印一定范围内的行,可以用可视模式选择需要打印的行再执行打印命令,例如: > 214 | 215 | v100j:hardcopy 216 | 217 | "v" 启动可视模式,"100j" 向下选中 100 行,然后执行 ":hardcopy" 打印这些行。当 218 | 然,你可以用其它命令选中这 100 行。 219 | 220 | 如果你有一台 PostScript 打印机,上面的方法也适合 Unix 系统。否则,你必须做一些 221 | 额外的处理:你需要先把文件转换成 HTML 类型,然后用 Netscape 等浏览器打印。 222 | 223 | 如下命令把当前文件转换成 HTML 格式: > 224 | 225 | :source $VIMRUNTIME/syntax/2html.vim 226 | 227 | 你发现它会嘎吱嘎吱执行一阵子,(如果文件很大,这可能要花点时间)。之后,Vim 会打 228 | 开一个新的窗口并显示 HTML 代码。现在把这个文件存下来 (存在哪都不要紧,反正最后 229 | 你要删掉它的): > 230 | 231 | :write main.c.html 232 | 233 | 用你喜欢的浏览器打开这个文件,并通过它打印这个文件。如果一切顺利,这个输出应该 234 | 与 Vim 中显示的一样。要了解更详细的信息,请参见 |2html.vim|。处理完后别忘了删 235 | 掉那个 HTML 文件。 236 | 237 | 除了打印,你还可以把这个 HTML 文件,放到 WEB 服务器上,让其他人可以通过彩色文 238 | 本阅读。 239 | 240 | ============================================================================== 241 | *06.6* 深入阅读 242 | 243 | |usr_44.txt| 自定义语法高亮 244 | |syntax| 关于本话题的全部细节 245 | 246 | ============================================================================== 247 | 248 | 下一章:|usr_07.txt| 编辑多个文件 249 | 250 | 版权:参见 |manual-copyright| vim:tw=78:ts=8:ft=help:norl: 251 | -------------------------------------------------------------------------------- /doc/usr_09.cnx: -------------------------------------------------------------------------------- 1 | *usr_09.txt* For Vim version 7.2 最近更新:2005年3月 2 | 3 | Vim用户手册 - by Bram Moolenaar 4 | 译者:Nek_in http://vimcdoc.sf.net 5 | 6 | 使用 GUI 版本 7 | 8 | 9 | Vim 能在一般的终端中很好地工作。GVim 则可以完成相同,甚至更多的功能。Gvim 能提 10 | 供菜单,工具条,滚动条和其它东西。本章介绍这些额外的功能。 11 | 12 | |09.1| GUI 版本的组件 13 | |09.2| 使用鼠标 14 | |09.3| 剪贴板 15 | |09.4| 选择模式 16 | 17 | 下一章:|usr_10.txt| 做大修改 18 | 前一章:|usr_08.txt| 分割窗口 19 | 目录:|usr_toc.txt| 20 | 21 | ============================================================================== 22 | *09.1* GUI 版本的组件 23 | 24 | 你可以在你的桌面上放一个启动 gVim 的图标。此外,下面的任一个命令也可以启动 25 | gVim: 26 | > 27 | gvim file.txt 28 | vim -g file.txt 29 | 30 | 如果这样不行,可能是因为你的 Vim 不支持 GUI 版本特性。你需要先安装一个合适的版 31 | 本。 32 | 执行命令后,Vim 会打开一个窗口,并显示文件 "file.txt"。窗口的样子取决于 33 | Vim 的版本。一般是下面这个样子 (尽可能地用 ASCII 码展示): 34 | 35 | +----------------------------------------------------+ 36 | | file.txt + (~/dir) - VIM X | <- 窗口标题 37 | +----------------------------------------------------+ 38 | | File Edit Tools Syntax Buffers Window Help | <- 菜单栏 39 | +----------------------------------------------------+ 40 | | aaa bbb ccc ddd eee fff ggg hhh iii jjj | <- 工具栏 41 | | aaa bbb ccc ddd eee fff ggg hhh iii jjj | 42 | +----------------------------------------------------+ 43 | | file text | ^ | 44 | | ~ | # | 45 | | ~ | # | <- 滚动条 46 | | ~ | # | 47 | | ~ | # | 48 | | ~ | # | 49 | | | V | 50 | +----------------------------------------------------+ 51 | 52 | 最大的一片空间是文件的内容。这部分与终端上看到的是一样的,只是颜色和字体可能有 53 | 一点差别。 54 | 55 | 56 | 窗 口 标 题 57 | 58 | 窗口最顶上是窗口标题。这由你的窗口系统绘制。Vim 会在这个标题上显示当前文件的相 59 | 关信息。首先显示的是文件名,然后是一个特殊字符,最后是用括号括住的目录名。下面 60 | 的是这些特殊字符的含义: 61 | 62 | - 文件不能被修改 (例如帮助文件) 63 | + 已经被修改过 64 | = 文件只读 65 | =+ 文件只读,但仍被修改过 66 | 67 | 如果没有显示任何特殊字符,表示这是一个普通的,没有改过的文件。 68 | 69 | 70 | 菜 单 栏 71 | 72 | 你知道菜单是怎么工作的,是吧? Vim 有些通用的菜单,外加一些特别的。逐个看看, 73 | 猜测一下这些菜单都可以用来干什么。另一个相关的子菜单是 Edit/Global,你可以在那 74 | 里找到这些菜单项: 75 | 76 | Toggle Toolbar 使工具条可见/不可见 77 | Toggle Bottom Scrollbar 使底部的滚动条可见/不可见 78 | Toggle Left Scrollbar 使左边的滚动条可见/不可见 79 | Toggle Right Scrollbar 使右边的滚动条可见/不可见 80 | 81 | 在大多数系统里,你可以把菜单 "撕下来"。选中菜单最上面的菜单栏,就是那个看起来 82 | 象条虚线的。这样你可以得到一个分离的菜单,里面包括了所有菜单项。它会一直挂在那 83 | 里,直到你关闭它。 84 | 85 | 86 | 工 具 栏 87 | 88 | 这里包括使用最频繁的操作的图标。希望这些图标功能显而易见。另外,每个图标都支持 89 | "工具提示" (把鼠标移上去停一会儿就能看见这个提示) 90 | 91 | "Edit/Global Settings/Toggle Toolbar" 菜单项可以关闭工具条。如果你从来都不使用 92 | 工具条,可以在 vimrc 文件中加上: 93 | > 94 | :set guioptions-=T 95 | 96 | 这个命令从 'guioptions' 中删除 "T" 标记。其它 GUI 部件也可以通过这种方法激活或 97 | 关闭。参见这个选项的相关帮助。 98 | 99 | 100 | 滚 动 条 101 | 102 | 默认情况下,右边会有一个滚动条,它的作用是很明显的。当你分割窗口的时候,每个窗 103 | 口都会有自己的滚动条。 104 | 你可以通过 "Edit/Global Settings/Toggle Bottom Scrollbar" 来启动一个水平滚 105 | 动条。这在比较模式或没有设置 'wrap' 时非常有用 (后面有更多描述)。 106 | 107 | 在使用垂直分割的时候,只有右边的窗口有滚动条,但当你把光标移到左边的窗口上,右 108 | 边的滚动条会对这个窗口起作用,这需要一些时间去适应。 109 | 当你使用垂直分割的时候,可以考虑把滚动条放在左边。这可以通过菜单激活,或者 110 | 使用 'guioptions' 选项: 111 | > 112 | :set guioptions+=l 113 | 114 | 这是在 'guioptions' 中增加 'l' 标志位。 115 | 116 | ============================================================================== 117 | *09.2* 使用鼠标 118 | 119 | 标准是好东西。在微软的 Windows 操作系统中,你可以用标准模式选中文本。X Windows 120 | 也有一套使用鼠标的标准。非常不幸,这两套标准是不同的。 121 | 幸运的是,你可以定制 Vim。你可以让你的鼠标行为象 X Windows 或者象微软 122 | Windows 的鼠标。下面的命令使鼠标用起来象 X Windows: 123 | > 124 | :behave xterm 125 | 126 | 而如下命令使鼠标用起来象微软 Windows: 127 | > 128 | :behave mswin 129 | 130 | 在 UNIX 操作系统中,默认的鼠标行为是 xterm。而默认的微软 Windows 系统的鼠标行 131 | 为是在安装的时候选定的。要了解这两种行为的详细信息,请参考 |:behave|。下面是一 132 | 些摘要: 133 | 134 | XTERM 鼠 标 行 为 135 | 136 | 左键单击 定位光标 137 | 左键拖动 在可视模式下选中文本 138 | 中键单击 从剪贴板中粘贴文本 139 | 右键单击 把选中的文本扩展到当前的光标位置 140 | 141 | 142 | 微软 Windows 鼠标行为 143 | 144 | 左键单击 定位光标 145 | 左键拖动 在选择模式下选中文本 (参见 |09.4|) 146 | 按住 Shift,左键单击 把选中的文本扩展到当前的光标位置 147 | 中键单击 从剪贴板中粘贴文本 148 | 右键单击 显示一个弹出式菜单 149 | 150 | 151 | 可以进一步定制鼠标。请参见下面的选项: 152 | 153 | 'mouse' 鼠标的使用模式 154 | 'mousemodel' 鼠标单击的效果 155 | 'mousetime' 双击的间隔允许时间 156 | 'mousehide' 输入的时候隐藏鼠标 157 | 'selectmode' 鼠标启动可视模式还是选择模式 158 | 159 | ============================================================================== 160 | *09.3* 剪贴板 161 | 162 | |04.7| 节已经介绍过剪贴板的基本使用了。这里有一个重要的地方要解释一下:对于 163 | X-windows 系统,有两个地方可以在程序间交换文本,而 MS-Windows 不是这样的。 164 | 165 | 在 X-Windows,有一个 "当前选择区" 的概念。它表示正被选中的文本。在 Vim 中,这 166 | 表示可视区 (假定你正使用默认的设置)。不需要任何其它操作,你就可以把这些文本贴 167 | 到别的程序中。 168 | 例如,你用鼠标在本文中选中一些文本。Vim 会自动切换到可视模式,并高亮这些文 169 | 本。现在启动另一个 gVim,(由于没有指定文件名,它会显示出一个空窗口)。点击鼠标 170 | 中键。被选中的文本就会被贴进来。 171 | "当前选择区" 会一直保持有效直到你选中其它文本。在另一个窗口中粘贴文本后, 172 | 在这个窗口中选中一些文字,你会发现上一个窗口中选中的文字显示的方法跟原来有些区 173 | 别了,这表示这些文字已经不是 "当前选择区" 了。 174 | 175 | 你不一定要用鼠标来选中文字,用键盘的 "可视" 命令也能达到相同的效果。 176 | 177 | "真" 剪 贴 板 178 | 179 | 对于另一个交换文本的地方,我们称之为 "真" 剪贴板以避免与上面的 "当前选择区" 混 180 | 淆。通常 "当前选择区" 和 "真" 剪贴板都称为剪贴板,你需要习惯这些名称。 181 | 要把文字拷贝到真剪贴板,在一个 gVim 中选中一些文本,然后执行菜单命令 182 | Edit/Copy。这样文字就被拷贝到真剪贴板了。剪贴板的内容是不可见的,除非你使用特 183 | 别的显示程序,例如 KDE 的 klipper 程序。 184 | 现在,切换到另一个 gVim,把光标停在某个位置,然后执行菜单命令 Edit/Paste 185 | 菜单。你会看到真剪贴板中的内容被插入到当前的光标位置。 186 | 187 | 188 | 使 用 两 种 剪 贴 板 189 | 190 | 这种同时使用 "当前选择区" 和 "真剪贴板" 的操作方式听起来很乱。但这是很有用的。 191 | 我们通过一个例子来说明。用 gVim 打开一个文件并执行如下命令: 192 | 193 | - 在可视模式下选中两个词 194 | - 使用 Edit/Copy 菜单把这些词拷到剪贴板 195 | - 再用可视模式选中另一个词 196 | - 执行 Edit/Paste 菜单命令。这样第二次选中的词会被前面剪贴板中的词代替。 197 | - 把鼠标移到另一个地方按中键,你会发现你刚被覆盖的单词被粘贴到新的位置。 198 | 199 | 如果你小心使用 "当前选择区" 和 "真剪贴板" 两个工具,你可以完成很多很有用的工 200 | 作。 201 | 202 | 203 | 使 用 键 盘 204 | 205 | 如果你不喜欢使用鼠标,你可以通过两个寄存器来使用 "当前选择区" 和 "真剪贴板" 两 206 | 个剪贴板。"* 寄存器用于表示当前选择区。 207 | 要使文本变成 "当前选择区",只要使用可视模式即可。例如,要选中一整行只要输入 208 | "V"。 209 | 要拷贝当前选择区的内容: 210 | > 211 | "*P 212 | 213 | 注意这里 "P" 是大写,表示把文字拷贝到光标的前面。 214 | 215 | "+ 寄存器用于真剪贴板。例如,要把当前光标位置到行末的文本拷到真剪贴板: 216 | > 217 | "+y$ 218 | 219 | 记得吧,"y" 是 yank,这是 Vim 的拷贝命令。 220 | 要把真剪贴板的内容拷到光标前面: 221 | > 222 | "+P 223 | 224 | 这与 "当前选择区" 一样,只是用 (+) 寄存器取代了 (*) 寄存器。 225 | 226 | ============================================================================== 227 | *09.4* 选择模式 228 | 229 | 现在介绍一些在 MS-Windows 中比在 X-Windows 中更常被使用的东西 (但在两个系统上 230 | 都可用)。你已经了解可视模式了。选择模式与可视模式相似,也是用来选中文字的。但 231 | 有一个显著区别:当输入文本的时候,在选择模式下,被选中的文字将被替换成新输入的 232 | 文字。 233 | 234 | 要启用选择模式,先要激活它 (对于 MS-Windows,可能已经激活了,不过多做一次也没 235 | 什么): 236 | > 237 | :set selectmode+=mouse 238 | 239 | 现在用鼠标选中一些文本,这些文本会好像可视模式一样被高亮。现在敲入一个字母。被 240 | 选中的文本被删除,替换成新的字母。现在已经是插入模式了,你可以继续输入。 241 | 242 | 由于输入普通文本导致选中的文字被删除,这时你不能使用 "hjkl","w" 等移动命令。 243 | 这时可以使用 "Shift" 加功能键。 (shift 键加左箭头) 使光标左移。选中的 244 | 文字象可视模式一样被扩展或者减少。其它箭头起的作用你也可以猜到了, 和 245 | 也一样。 246 | 247 | 你可以通过 'selectmode' 选项修改选择模式的工作方式。 248 | 249 | ============================================================================== 250 | 251 | 下一章:|usr_10.txt| 作大修改 252 | 253 | 版权:参见 |manual-copyright| vim:tw=78:ts=8:ft=help:norl: 254 | -------------------------------------------------------------------------------- /doc/usr_23.cnx: -------------------------------------------------------------------------------- 1 | *usr_23.txt* For Vim version 7.2. 最近更新:2005年3月 2 | 3 | VIM 用户手册 - Bram Moolenaar 著 4 | 译者: Chimin Yen http://vimcdoc.sf.net 5 | 6 | 编辑特殊文件 7 | 8 | 9 | 本章讨论特殊文件的编辑。利用 Vim 你可以编辑经过压缩或加密的文件。有些文件需要 10 | 在互联网上存取。二进制文件也能有限度地编辑。 11 | 12 | |23.1| DOS、Mac 和 Unix 文件 13 | |23.2| 互联网上的文件 14 | |23.3| 加密 15 | |23.4| 二进制文件 16 | |23.5| 压缩文件 17 | 18 | 下一章: |usr_24.txt| 快速插入 19 | 前一章: |usr_22.txt| 寻找要编辑的文件 20 | 目录: |usr_toc.txt| 21 | 22 | ============================================================================== 23 | *23.1* DOS、Mac 和 Unix 文件 24 | 25 | 很久以前,老式的电传打字机使用两个字符来另起新行。一个字符把滑动架移回首位 (称 26 | 为回车,),另一个字符把纸上移一行 (称为换行,)。 27 | 当计算机问世以后,存储器曾经非常昂贵。有些人就认定没必要用两个字符来表示行 28 | 尾。UNIX 开发者决定他们可以用 一个字符来表示行尾。Apple 开发者规定 29 | 了用 。开发 MS-DOS (以及微软视窗) 的那些家伙则决定沿用老式的 。 30 | 那意味着,如果你试图把一个文件从一种系统移到另一种系统,那么你就有换行符方 31 | 面的麻烦。Vim 编辑器自动识别不同文件格式,并且不劳你操心就把事情给办妥了。 32 | 选项 'fileformats' 包含各种各样的格式,Vim 会在编辑一个新文件之初尝试该选项 33 | 定义的各种格式。例如,下面这个命令告诉 Vim 先尝试用 UNIX 格式,其次,尝试 34 | MS-DOS 格式: > 35 | 36 | :set fileformats=unix,dos 37 | 38 | 编辑一个文件时,你将注意到 Vim 给出的信息消息报中包括文件所用的格式。如果你编 39 | 辑的是本地格式文件 (你编辑的文件格式和所用系统一致),你就不会看到任何格式名。 40 | 因此在 Unix 系统上编辑一个 Unix 格式文件不会产生任何关于格式的信息。但你若编辑 41 | 一个 dos 文件,Vim 将这样通知你: 42 | 43 | "/tmp/test" [dos] 3L,71C ~ 44 | 45 | 如果是 Mac 文件,你会看到 "[mac]"。 46 | 探测到的文件格式会被存入 'fileformat' 选项。执行下面这个命令可以显示你当前 47 | 使用的文件格式: > 48 | 49 | :set fileformat? 50 | 51 | Vim 能使用的三种格式如下: 52 | 53 | unix 54 | dos 55 | mac 56 | 57 | 58 | 使 用 MAC 格 式 59 | 60 | 在 Unix 上, 用于分行。但 字符混在文本行中间也非罕见。这种情况碰巧经 61 | 常发生在 Vi (和 Vim) 脚本内。 62 | 在采用 作为换行符的 Macintosh 上, 字符也有可能混在文本行中间。 63 | 结果,很难 100% 肯定一个同时包含 的文件究竟是 Mac 还是 Unix 格 64 | 式。所以,Vim 假设你一般不会在 Unix 上编辑一个 Mac 文件,所以干脆对这种文件格 65 | 式不作检查。果真要检查此种格式,就把 "mac" 加入 'fileformats': > 66 | 67 | :set fileformats+=mac 68 | 69 | 然后 Vim 就会猜测文件格式。要当心, Vim 可能会猜错的。 70 | 71 | 72 | 强 制 格 式 73 | 74 | 如果你用往日美好的 Vi 来尝试编辑一个采用 MS-DOS 格式的文件,你将会发现每一行的 75 | 末尾有个 ^M 字符。(^M 就是 )。而 Vim 的自动探测功能就避免了这个问题。莫非 76 | 你确实要按那个样子来编辑这个文件吗?那么你需要强制 Vim 忽略文件格式而使用你指 77 | 定的格式: > 78 | 79 | :edit ++ff=unix file.txt 80 | 81 | 字符串 "++" 告诉 Vim 后面跟的是选项名,以取代其默认值。但仅作用于这一个命令。 82 | "++ff" 用于 'fileformat' 选项。你也可以用 "++ff=mac" 或 "++ff=dos"。 83 | 这样用法并非适用于任意选项,目前 Vim 仅仅实现了 "++ff" 和 "++enc"。用全称 84 | "++fileformat" 和 "++encoding" 也行。 85 | 86 | 87 | 转 换 88 | 89 | 你可以用 'fileformat' 选项把文件从一种格式转换为另一种。例如,假定你有个名为 90 | README.TXT 的 MS-DOS 文件,你要把它转换成 UNIX 格式。首先编辑这个采用 MS-DOS 91 | 格式的文件: > 92 | vim README.TXT 93 | 94 | Vim 将识别出那是一个 dos 格式文件。现在把这个文件的格式改为 UNIX: > 95 | 96 | :set fileformat=unix 97 | :write 98 | 99 | 这个文件就以 Unix 格式存盘了。 100 | 101 | ============================================================================== 102 | *23.2* 互联网上的文件 103 | 104 | 有人给你传送了一封电子邮件,其中引用了一个以超链接 URL 表示的文件。例如: 105 | 106 | You can find the information here: ~ 107 | ftp://ftp.vim.org/pub/vim/README ~ 108 | 109 | 你当然可以启动一个程序来下载这个文件,把它存入你本地磁盘,然后启动 Vim 来编辑 110 | 它。 111 | 但有一个简单得多的方法。把光标移到那个超链接里任何一个字符上,然后使用这个 112 | 命令: > 113 | 114 | gf 115 | 116 | 运气好的话,Vim 将确定用哪个程序来下载这个文件,并把文件下载下来让你编辑该副 117 | 本。在另一个新窗口打开这个文件,则用 CTRL-W f。 118 | 如果事情不顺利的话,你会得到出错信息。可能那个链接有错,也可能你没有阅读它 119 | 的权限,还可能网络连接中断了,等等。不幸的是,很难讲搞清除出错的原因。你也许得 120 | 尝试以手工方法来下载这个文件。 121 | 122 | 访问因特网上的文件要安装插件 netrw 才行。目前,下面这些格式的超文本链接可被识 123 | 别: 124 | 125 | ftp:// 使用 ftp 126 | rcp:// 使用 rcp 127 | scp:// 使用 scp 128 | http:// 使用 wget (只读) 129 | 130 | Vim 并非亲自与因特网联系。它有赖于你的计算机上安装好的上面提及的程序。大多数 131 | Unix 系统上装有 "ftp" 和 "rcp"。而 "scp" 和 "wget" 也许要另外安装。 132 | 133 | 无论你用哪个命令开始编辑,Vim 总是会探测一下这些超文本链接。包括如 ":edit" 和 134 | ":split" 这样的命令。存盘命令也行,但除了 http:// 之外。 135 | 136 | 欲知详情,包括密码问题,参见 |netrw|。 137 | 138 | ============================================================================== 139 | *23.3* 加密 140 | 141 | 有些信息你希望保留给自己。例如,当你在计算机上写一份给学生用的试卷。你不会愿意 142 | 在考试开始之前给聪明的学生琢磨出一种偷阅试题的方法。Vim 能为你给文件加密,为你 143 | 提供一些保护。 144 | 要开始编辑一个需要加密的新文件,可以用 "-x" 参数来启动 Vim。例如: > 145 | 146 | vim -x exam.txt 147 | 148 | Vim 提示你确定一个密码,用于为文件加密和解密: 149 | 150 | Enter encryption key: ~ 151 | 152 | (译者注: 中文是 153 | 输入密码: ~ 154 | ) 155 | 156 | 现在仔细键入那个密码。你所键入的字符将为星号代替,因此你看不到。为了避免由于打 157 | 字错误引起麻烦,Vim 要求你再输入一次密码: 158 | 159 | Enter same key again: ~ 160 | 161 | (译者注: 中文是 162 | 请再输入一次: ~ 163 | ) 164 | 165 | 现在你可以像平时一样编辑这个文件并把你所有的秘密放进去。当你编完文件要退出 Vim 166 | 时,这个文件就被加密存盘了。 167 | 当你用 Vim 编辑这个文件时,它就会要求你再输入那同一个密码。你不需要用 "-x" 168 | 参数。你也可以用普通的 ":edit" 命令编辑加密的文件。Vim 给这个文件加上特定的 169 | magic 字符串,据以识别那是经过加密的文件。 170 | 如果你试图用另一个程序来阅读这个文件,你将读到一堆垃圾。如果你用 Vim 来编辑 171 | 这个文件,但输入了错误的密码,你也只能得到垃圾。Vim 并不具备检验密码正确性的机 172 | 理 (这一点使得破译密码更为困难)。 173 | 174 | 175 | 开 / 关 加 密 176 | 177 | 要给一个文件撤除加密,设定 'key' 选项为空字符串: 178 | > 179 | :set key= 180 | 181 | 你下次把这个文件存盘时,存盘的文件就是未经加密的。 182 | 设定 'key' 选项来启用加密是个坏主意。因为密码会被清清楚楚地显示在屏幕上。任 183 | 何人都可以偷看到你的密码。 184 | 为了避免这样的问题,创造了 ":X" 命令。它会像 "-x" 参数向你索取一个密码: > 185 | 186 | :X 187 | Enter encryption key: ****** 188 | Enter same key again: ****** 189 | 190 | 191 | 加 密 的 局 限 性 192 | 193 | Vim 采用的加密算法有弱点的。它对于防止那种偷窥者是绰绰有余了,但不足以防止一个 194 | 手上有大量时间的密码专家。而且,你应该知道交换文件是不加密的;所以当你在编辑文 195 | 件时,拥有超级用户权限的人能够读取未经加密的文件文本。 196 | 不让人们读到你的交换文件的一个方法就是不使用交换文件。如果在命令行上用了 -n 197 | 参数,交换文件就不会被创建了 (Vim 把所有的东西都存放在内存里)。例如,要编辑经 198 | 过加密的文件 "file.txt",但不用交换文件,请用下面的命令: > 199 | 200 | vim -x -n file.txt 201 | 202 | 如果你已经在编辑这个文件了,那么交换文件 swapfile 可以用下面的命令禁止: > 203 | 204 | :setlocal noswapfile 205 | 206 | 由于没了交换文件,文件复原就不可能了。为了避免失去编辑的成果,要比平时更勤快地 207 | 存盘你的文件。 208 | 209 | 文件在内存中以明文形式存在。因此任何具备权限的人都能进入编辑者的内存浏览,从 210 | 而,发现这个文件的内容。 211 | 如果你使用信息文件 viminfo,别忘了文本寄存器的内容也是明明白白写在其中的。 212 | 如果你真的要保证一个文件内容的安全,那么,你必须永远只在一个不联网的可携式 213 | 计算机上编辑这个文件,使用优良的加密工具,并且在不用时,把你的计算机锁进一个大 214 | 保险箱。 215 | 216 | ============================================================================== 217 | *23.4* 二进制文件 218 | 219 | 你可以用 Vim 来编辑二进制文件。Vim 本非为此而设计的,因而有若干局限。但你能读 220 | 取一个文件,改动一个字符,然后把它存盘。结果是你的文件就只有那一个字符给改了, 221 | 其它的就跟原来那个一模一样。 222 | 要保证 Vim 别把它那些聪明的窍门用错地方,启动 Vim 时加上 "-b" 参数: > 223 | 224 | vim -b datafile 225 | 226 | 这个参数设定了 'binary' 选项。其作用是排除所有的意外副作用。例如,'textwidth' 227 | 设为零,免得文本行给擅自排版了。并且,文件一律以 Unix 文件格式读取。 228 | 229 | 二进制模式可以用来修改某程序的消息报文。小心别插入或删除任何字符,那会让程序运 230 | 行出问题。用 "R" 命令进入替换模式。 231 | 232 | 文件里的很多字符都是不可显示的。用 Hex 格式来显示它们的值: > 233 | 234 | :set display=uhex 235 | 236 | 另外,也可以用命令 "ga" 来显示光标下的字符值。当光标位于一个 字符上时, 237 | 该命令的输出看起来就像这样: 238 | 239 | <^[> 27, Hex 1b, Octal 033 ~ 240 | 241 | 文件中也许没那么多换行符。你可以关闭 'wrap' 选项来获得总览的效果: > 242 | 243 | :set nowrap 244 | 245 | 246 | 字 节 位 置 247 | 248 | 要发现你在文件中的当前字节位置,请用这个命令: > 249 | 250 | g CTRL-G 251 | 252 | 其输出十分冗长: 253 | 254 | Col 9-16 of 9-16; Line 277 of 330; Word 1806 of 2058; Byte 10580 of 12206 ~ 255 | 256 | 最后两个数字就是文件中的当前字节位置和文件字节总数。这已经考虑了 'fileformat' 257 | 选项导致换行符字节不同的影响。 258 | 要移到文件中某个指定的字节,请用 "go" 命令。例如,要移到字节 2345: > 259 | 260 | 2345go 261 | 262 | 263 | 使 用 XXD 264 | 265 | 一个真正的二进制编辑器用两种方式来显示文本: 二进制和十六进制格式。你可以在 Vim 266 | 里通过转换程序 "xxd" 来达到这效果。该程序是随 Vim 一起发布的。 267 | 首先以二进制方式编辑这个文件: > 268 | 269 | vim -b datafile 270 | 271 | 现在用 xxd 把这个文件转换成十六进制: > 272 | 273 | :%!xxd 274 | 275 | 文本看起来像这样: 276 | 277 | 0000000: 1f8b 0808 39d7 173b 0203 7474 002b 4e49 ....9..;..tt.+NI ~ 278 | 0000010: 4b2c 8660 eb9c ecac c462 eb94 345e 2e30 K,.`.....b..4^.0 ~ 279 | 0000020: 373b 2731 0b22 0ca6 c1a2 d669 1035 39d9 7;'1.".....i.59. ~ 280 | 281 | 现在你可以随心所欲地阅读和编辑这些文本了。 Vim 把这些信息当作普通文本来对待。 282 | 修改了十六进制部分并不导致可显示字符部分的改变,反之亦然。 283 | 最后,用下面的命令把它转换回来: 284 | > 285 | :%!xxd -r 286 | 287 | 只有十六进制部分的修改才会被采用。右边可显示文本部分的修改忽略不计。 288 | 289 | 欲知更多详情,参见 xxd 手册。 290 | 291 | ============================================================================== 292 | *23.5* 压缩文件 293 | 294 | 这很容易: 你可以像编辑任何其它文件一样,来编辑一个经过压缩的文件。插件 "gzip" 295 | 负责在你编辑这个文件时把它解压缩,以及在你存盘时再把它压缩起来。 296 | 目前支持的压缩方法有下面这些: 297 | 298 | .Z compress 299 | .gz gzip 300 | .bz2 bzip2 301 | 302 | Vim 调用上面提到的程序来实际完成压缩和解压缩。你也许需要先安装这些程序。 303 | 304 | ============================================================================== 305 | 306 | 下一章: |usr_24.txt| 快速插入 307 | 308 | 版权: 参见 |manual-copyright| vim:tw=78:ts=8:ft=help:norl: 309 | -------------------------------------------------------------------------------- /doc/usr_26.cnx: -------------------------------------------------------------------------------- 1 | *usr_26.txt* For Vim version 7.2 最近更新:2005年3月 2 | 3 | VIM 用户手册 - Bram Moolenaar 著 4 | 译者: Chimin Yen http://vimcdoc.sf.net 5 | 6 | 重复 7 | 8 | 9 | 编辑工作往往不是杂乱无章的。同一个修改动作常常会被重复多次。在本章中,我们将解 10 | 释几种有用的重复修改动作的方法。 11 | 12 | |26.1| 可视模式下的重复 13 | |26.2| 加与减 14 | |26.3| 改动多个文件 15 | |26.4| 在 shell 脚本里使用 Vim 16 | 17 | 下一章: |usr_27.txt| 查找命令及模式 18 | 前一章: |usr_25.txt| 编辑带格式的文本 19 | 目录: |usr_toc.txt| 20 | 21 | ============================================================================== 22 | *26.1* 可视模式下的重复 23 | 24 | 可视模式在反复修改一段文本方面十分方便。你可以看见高亮的文本,从而确定是否改对 25 | 了地方。但选择文本也得打几个字。"gv" 命令再次选择上次选过的文本,让你对同一段 26 | 文本再作别的修改。 27 | 假定你有几行文本,你要把其中的 "2001" 改成 "2002",以及 "2000" 改成 "2001": 28 | 29 | The financial results for 2001 are better ~ 30 | than for 2000. The income increased by 50%,~ 31 | even though 2001 had more rain than 2000. ~ 32 | 2000 2002 ~ 33 | income 45,403 66,234 ~ 34 | 35 | 首先把 "2001" 改成 "2002"。在可视模式下选择这几行文本,并执行: > 36 | 37 | :s/2001/2002/g 38 | 39 | 现在用 "gv" 命令再次选择同一文本。光标在哪儿都没关系。然后用 ":s/2000/2001/g" 40 | 命令作第二项修改。 41 | 很明显,你可以多次重复这些动作。 42 | 43 | ============================================================================== 44 | *26.2* 加与减 45 | 46 | 当你反复地把一个数改成另一个时,你常遇到定值的偏移。在上例中,每个年份都加了 47 | 一。与其为每个要修改的年份都键入一个替换命令,不如利用 CTRL-A 命令。 48 | 在上面这段文本中搜索年份: > 49 | 50 | /19[0-9][0-9]\|20[0-9][0-9] 51 | 52 | 现在按 CTRL-A。找到的年份增加了一: 53 | 54 | The financial results for 2002 are better ~ 55 | than for 2000. The income increased by 50%,~ 56 | even though 2001 had more rain than 2000. ~ 57 | 2000 2001 ~ 58 | income 45,403 66,234 ~ 59 | 60 | 用 "n" 命令找到下一个年份,并按 "." 重复 CTRL-A 命令 (键入 "." 会快一点儿)。为 61 | 所有找到的年份重复 "n" 和 "."。 62 | 提示: 设定 'hlsearch' 选项以突显那些你要修改的数字,然后你可以提前观察并修 63 | 改得快些。 64 | 65 | 你可以在 CTRL-A 之前附加数字来增加一个大于一的数。假定你有这么个列表: 66 | 67 | 1. item four ~ 68 | 2. item five ~ 69 | 3. item six ~ 70 | 71 | 把光标移到 "1." 上并键入: > 72 | 73 | 3 CTRL-A 74 | 75 | 那个 "1." 就变成了 "4."。同样,你可以用 "." 命令对其它数字重复这项修改。 76 | 77 | 再看一个例子: 78 | 79 | 006 foo bar ~ 80 | 007 foo bar ~ 81 | 82 | 在这些数字上执行 CTRL-A 产生了以下结果: 83 | 84 | 007 foo bar ~ 85 | 010 foo bar ~ 86 | 87 | 7 加 1 等于 10? 这是因为 Vim 根据首位出现的 "0" 而误以为 "007" 是个八进位数 88 | 字。这种表示法常用于 C 程序。如果你不要首位为 "0" 的数字被处理成八进位数字,请 89 | 用这个命令: > 90 | 91 | :set nrformats-=octal 92 | 93 | CTRL-X 命令用于减数字,用法与加数字类似。 94 | 95 | ============================================================================== 96 | *26.3* 改动多个文件 97 | 98 | 假定你有个变量名为 "x_cnt" 而你要把他改为 "x_counter"。这个变量在多个 C 文件都 99 | 被用到了。你需要在所有文件中作此改动。你得这么做。 100 | 把所有相关文件放进参数列表: > 101 | 102 | :args *.c 103 | < 104 | 这个命令会找到所有的 C 文件并编辑其中的第一个。现在你可以对所有这些文件执行替 105 | 代命令: > 106 | 107 | :argdo %s/\/x_counter/ge | update 108 | 109 | 命令 ":argdo" 把另一个命令当作其参数。而后者将对参数列表内所有的文件执行。 110 | 作为参数的替代命令 "%s" 作用于所有文本行。它用 "\" 来查找 "x_cnt"。 111 | "\<" 和 "\>" 用来指定仅匹配那些完整的词,而不是 "px_cnt" 或 "x_cnt2"。 112 | 替代命令的标志位中包含 "g",用以置换同一行文本内出现的所有的匹配 "x_cnt"。 113 | 标志位 "e" 用于避免因文件中找不到 "x_cnt" 而出现错误信息。否则 ":argdo" 命令就 114 | 会在遇到第一个找不到 "x_cnt" 的文件时中断。 115 | 字符 "|" 分隔两条命令。后面的 "update" 命令将那些有改动的文件存盘。如果没有 116 | "x_cnt" 被改成 "x_counter",这个命令什么也不做。 117 | 118 | 还有一个 ":windo" 命令,用于在所有窗口内执行其参数所规定的命令。以及 ":bufdo" 119 | 命令,对所有缓冲区执行其参数所规定的命令。使用中要小心,因为你在缓冲区列表中的 120 | 文件数量可能超过你能想像的。请用 ":buffers" 命令 (或 ":ls") 来检查缓冲区列表。 121 | 122 | ============================================================================== 123 | *26.4* 在 shell 脚本里使用 Vim 124 | 125 | 假定你要在很多文件内把字符串 "-person-" 改成 "Jones",然后把它们打印出来。你该 126 | 怎么做?一种方法是键入许许多多命令。另一种是写个 shell 脚本来完成这件工作。 127 | 作为一个可视的交互式的编辑器,Vim 在执行普通模式命令时表现得极为出色。然而 128 | 在批量处理时,普通模式命令无法产生简洁的带有注释的命令文件;在此,你该转而利用 129 | Ex 模式。该模式为你提供一种友好的命令行界面,方便你把命令写进一个批处理文件。 130 | ("Ex 命令" 无非是命令行 (:) 命令的另一个名称。) 131 | 以下就是你所需要的 Ex 模式命令: > 132 | 133 | %s/-person-/Jones/g 134 | write tempfile 135 | quit 136 | 137 | 你把这些命令放进文件 "change.vim" 里。现在就用这个 shell 脚本在批量模式下运行 138 | 编辑器: > 139 | 140 | for file in *.txt; do 141 | vim -e -s $file < change.vim 142 | lpr -r tempfile 143 | done 144 | 145 | 循环 for-done 是一个 shell 结构,用来重复执行循环结构内的两行命令,而变量 146 | $file 则在每次循环时被设成不同的文件名。 147 | 脚本第二行的作用是对文件 $file 运行 Vim 且在 Ex 模式下 (参数 -e),并从文件 148 | "change.vim" 读取命令。参数 -s 告诉 Vim 运行在安静模式下。换言之,不要持续不断 149 | 的发出 :prompt,或针对那个问题发出的任何别的提示。 150 | 命令 "lpr -r tempfile" 打印执行中产生的文件 "tempfile" 并把它删除 (是参数 151 | -r 的作用)。 152 | 153 | 154 | 从 标 准 输 入 读 取 155 | 156 | Vim 能从标准输入读取文本。由于通常从那里读取的是命令,你得告诉 Vim 你读的是文 157 | 本。这需要在通常是文件名的地方传送一个参数 "-"。例如: > 158 | 159 | ls | vim - 160 | 161 | 这个命令让你编辑 "ls" 命令的输出结果,而不必先把那些输出文本存入一个文件。 162 | 如果你从标准输入读取文本,那么你可以用参数 "-S" 来读取脚本: > 163 | 164 | producer | vim -S change.vim - 165 | 166 | 167 | 普 通 模 式 脚 本 168 | 169 | 如果你真的要在脚本内利用普通模式命令,你可以这样来用: > 170 | 171 | vim -s script file.txt ..。 172 | < 173 | 注意: 174 | 当 "-s" 不与 "-e" 一起用时,它的意思是不同的。此时,它的意思是把文件 175 | "script" 里的命令当作普通模式命令来执行。而与 "-e" 一起用时,它的意思 176 | 是保持安静,并不会把下一个参数视为文件名。 177 | 178 | 文件 "script" 里的命令就像你键入它们那样得到执行。别忘了换行符被解释成按下回车 179 | 键 。在普通模式下该键把光标移到下一行。 180 | 要创建这么一个脚本你可以编辑这个脚本文件,键入那些命令。你得想象每个命令会 181 | 产生什么样的结果。这可不那么容易。另一种方法是在你手动执行那些命令时把它们记录 182 | 下来。你可以采用下面的方法: > 183 | 184 | vim -w script file.txt ..。 185 | 186 | 所有键入的字符都将被写进文件 "script"。如果你犯了个小错误,不妨继续输入。但要 187 | 记得事后更正一下这个脚本文件。 188 | 参数 "-w" 会将新键入的命令附加在一个已存在的脚本文件末尾。这在你需要一点儿 189 | 一点儿记录该脚本时是很不错的。但当你要从零开始重新记录你的脚本时,你则需要用 190 | "-W" 参数。该参数重写任何已存在的文件。 191 | 192 | ============================================================================== 193 | 194 | 下一章: |usr_27.txt| 搜索命令和模式 195 | 196 | 版权: 参见 |manual-copy:wright| vim:tw=78:ts=8:ft=help:norl: 197 | -------------------------------------------------------------------------------- /doc/usr_31.cnx: -------------------------------------------------------------------------------- 1 | *usr_31.txt* For Vim version 7.2. 最近更新:2006年5月 2 | 3 | VIM USER MANUAL - by Bram Moolenaar 4 | 译者:lang2 http://vimcdoc.sf.net 5 | 6 | 利用 GUI 7 | 8 | 9 | Vim 可以很好地在终端内工作,但是 GUI 也有其优点。比如:一个使用文件的命令可以 10 | 利用文件浏览器,需要作选择时可以利用对话框。使用快捷键可以更方便的使用菜单。 11 | 12 | |31.1| 文件浏览器 13 | |31.2| 确认 14 | |31.3| 菜单快捷键 15 | |31.4| Vim 窗口位置及大小 16 | |31.5| 杂项 17 | 18 | 后一章: |usr_32.txt| 撤销树 19 | 前一章: |usr_30.txt| 编辑程序 20 | 目录: |usr_toc.txt| 21 | 22 | ============================================================================== 23 | *31.1* 文件浏览器 24 | 25 | 在使用 File/Open... 菜单的时候你会看到一个文件浏览器。这会使你更容易找到要编辑 26 | 的文件。但是如果你想把窗口分割并编辑另一个文件呢?没有一个菜单项是做这个的。你 27 | 当然可以先用 Window/Split 然后再用 File/Open...,但这样适得其反。 28 | 大多数时候你使用 Vim 都是键入命令的,同样,打开一个文件浏览器也可以。为了让 29 | split 命令使用文件浏览器,在它前面加上 "browse" 就行了: > 30 | 31 | :browse split 32 | 33 | 选中一个文件后 ":split" 命令就会与其一起被执行。如果你取消文件对话框就什么都不 34 | 会发生。当前窗口也不会被分割。 35 | 你也可以指定一个文件名作为参数。这将告诉浏览器从那里开始查找文件。例如: > 36 | 37 | :browse split /etc 38 | 39 | 文件浏览器将以 "/etc" 作为起始目录。 40 | 41 | ":browse" 命令几乎可被添加在任何打开文件的命令前。 42 | 如果没有指定目录,Vim 会自己决定从哪里开始浏览。缺省情况 Vim 会从上次同样的 43 | 目录开始。这样当你用 ":browse split" 命令并选中了一个 "/usr/local/share" 里的 44 | 文件,下次你在用 ":browse" 时,浏览将从 "/usr/local/share" 开始。 45 | 用 'browsedir' 选项可以改变浏览的启动目录。可能的选项值包括: 46 | 47 | last 使用上次的目录 (缺省) 48 | buffer 使用当前缓冲区所在的目录 49 | current 使用当前目录 50 | 51 | 例如,当你在 "/usr" 目录内编辑文件 "/usr/local/share/readme" 时,那么命令: > 52 | 53 | :set browsedir=buffer 54 | :browse edit 55 | 56 | 会从 "/usr/local/share" 开始浏览,类似地: > 57 | 58 | :set browsedir=current 59 | :browse edit 60 | 61 | 会从 "/usr" 开始浏览。 62 | 63 | 备注: 64 | 为了避免使用鼠标,多数文件浏览器提供键盘操作。这些操作因系统而异,这里 65 | 不作解释。可能的情况下 Vim 使用系统的标准浏览器。请参阅你所用系统的文 66 | 档。 67 | 68 | 当你不是使用 GUI 版本时,你也可以使用文件浏览窗口来选择文件。然而,":browse" 69 | 命令就无效了。参阅 |netrw-browse|。 70 | 71 | ============================================================================== 72 | *31.2* 确认 73 | 74 | Vim 会保护你的文件不被意外的覆盖或者其它的信息丢失。如果你要作一些可能有危险的 75 | 事,Vim 会以一个错误信息提醒你并建议在命令后加上 ! 来确认你希望进行该操作。 76 | 为了避免重新输入一个带有 ! 的命令,你可以要求 Vim 用一个对话框来向你询问。 77 | 你就可以选择 "OK" 或 "Cancel" 来告诉 Vim 你的要求。 78 | 例如,你正在编辑一个文件并做了一些改动。你要开始编辑另一个文件: > 79 | 80 | :confirm edit foo.txt 81 | 82 | Vim 会弹出一个类似下面的对话框: 83 | 84 | +-----------------------------------+ 85 | | | 86 | | ? Save changes to "bar.txt"? | 87 | | | 88 | | YES NO CANCEL | 89 | +-----------------------------------+ 90 | 91 | 你可以作选择了。如果你希望保存变动,选择 "YES"。如果你想放弃变动: "NO"。如果你 92 | 想放弃编辑新文件的操作而返回来看看自己都做了那些改动用 "CANCEL"。 你会回到原来 93 | 的文件,你所做的改动也都还在。 94 | 95 | 就像 ":browse" 一样,":confirm" 命令也可以被加在多数编辑其它文件的命令之前。你 96 | 还可以把它们两个联起来用: > 97 | 98 | :confirm browse edit 99 | 100 | 如果当前缓冲区被改动的话这个命令会产生一个对话框。接着会弹出一个文件浏览器来选 101 | 择将要编辑的文件。 102 | 103 | 备注: 104 | 在对话框中你可以使用键盘来作选择操作。通常来说 键和光标键可以改 105 | 变选项。键入 会确认选项。但这也跟你用的系统有关。 106 | 107 | 当你不是使用 GUI 版本的时候, ":confirm" 也是有效的。Vim 不会弹出一个对话框, 108 | 而是将询问显示在 Vim 窗口的底部并提示你键入选择。> 109 | 110 | :confirm edit main.c 111 | < Save changes to "Untitled"? ~ 112 | [Y]es, (N)o, (C)ancel: ~ 113 | 114 | 你可以键入单键来作出选择。不用键入 ,这和其它命令行的输入不同。 115 | 116 | ============================================================================== 117 | *31.3* 菜单快捷键 118 | 119 | 所有的 Vim 命令都是用键盘来完成的。在不知道命令名称的情况下,使用菜单会简单 120 | 些。但是你就得把手从键盘上移开去抓鼠标。 121 | 通常菜单用键盘也可以操作。这决定于你所使用的系统,但多数情况下是这样工作 122 | 的:将 键和菜单项中带下划线的字母连用。例如, ( 加 w) 弹出 123 | Window 菜单。 124 | 在 Window 菜单下,"split" 菜单项中的 p 下面划了线。放开 键然后按 p 就 125 | 可以选中它了。 126 | 127 | 在用 键选中菜单后,你可以用光标键来在菜单内移动。 选择一个子菜 128 | 单, 关闭之。 也用来关闭菜单。 选中一个菜单项。 129 | 130 | 使用 键来操作菜单和使用 键的映射会出现冲突。'winaltkeys' 可以用来 131 | 告诉 Vim 如何对待 键。 132 | 缺省值 "menu" 是一个明智的选择:如果该键组合是一个菜单快捷键那么就不能被作 133 | 为映射。所有其它的键都可以。 134 | "no" 表示不使用 键组合来操作菜单。这样你就必须使用鼠标。所有 135 | 键组合都可以被用作键盘映射。 136 | "yes" 表示 Vim 会使用 键组合来操作菜单。另外的 键组合也可以用 137 | 作其它用途。 138 | 139 | ============================================================================== 140 | *31.4* Vim 窗口位置及大小 141 | 142 | 要查看当前 Vim 窗口在屏幕上的位置可以用: > 143 | 144 | :winpos 145 | 146 | 这只对 GUI 有效。输出可能是这样的: 147 | 148 | Window position: X 272, Y 103 ~ 149 | 150 | 位置是以屏幕像素为单位的。你可以通过数字来将 Vim 窗口移动到别处。例如,将其向 151 | 左移动一百个像素: > 152 | 153 | :winpos 172 103 154 | < 155 | 备注: 156 | 报告的窗口位置和窗口被移动的位置可能会有小的出入。这是由窗口周围的边框 157 | 引起的。边框是被窗口管理器加上的。 158 | 159 | 你可以在你的启动脚本中使用这个命令来将窗口定位到一个指定的位置。 160 | 161 | Vim 窗口的大小是以字符数目计算的。因此它和所使用的字体的大小有关。你可以查看当 162 | 前的窗口大小: > 163 | 164 | :set lines columns 165 | 166 | 要改变窗口大小只要改变 'lines' 和/或 'columns' 选项的值即可: > 167 | 168 | :set lines=50 169 | :set columns=80 170 | 171 | 取得窗口大小的操作在终端和在 GUI 上都可以。但是设定大小在绝大多数终端里都是不 172 | 可能的。 173 | 174 | 在启动 X-Window 版本的 gvim 时你可以在命令行指定窗口的位置和大小: > 175 | 176 | gvim -geometry {width}x{height}+{x_offset}+{y_offset} 177 | 178 | {width} 和 {height} 的单位是字符。{x_offset} 和 {y_offset} 的单位是像素。例: > 179 | 180 | gvim -geometry 80x25+100+300 181 | 182 | ============================================================================== 183 | *31.5* 杂项 184 | 185 | 你可以使用 gvim 来编辑一个 e-mail。在你的 e-mail 程序里你得选择 gvim 作为其编 186 | 辑程序。当你尝试这种配置的时候,你会发现行不通:邮件程序认为编辑已经结束了,可 187 | 实际上 gvim 还在运行着! 188 | 这里的情况是由于 gvim 启动时会将自己从 shell 分离出来的缘故。如果你是从终端 189 | 启动 gvim 的话这当然没有问题,你还可以在 shell 里作其它事。但如果你的确希望等 190 | 待 gvim 结束的话,你必须阻止这个分离动作。"-f" 参数就是用来做这个的: > 191 | 192 | gvim -f file.txt 193 | 194 | "-f" 代表前台 (foreground)。这样 Vim 就会挂起它启动所在的 shell,直到你编辑完 195 | 毕并退出为止。 196 | 197 | 198 | 推 迟 启 动 GUI 199 | 200 | 在 Unix 上你可以先在终端里启动 Vim。当你在一个 shell 里完成各种不同任务的时候 201 | 这很有方便。如果当你在编辑某个文件时决定你想使用 GUI,你可以这样做: > 202 | 203 | :gui 204 | 205 | Vim 就会打开 GUI 窗口并不再使用终端。你可以继续在终端里作其它事情。 "-f" 参数 206 | 在这里也可以用来将 GUI 放置在前台:":gui -f"。 207 | 208 | 209 | GVIM 启 动 文 件 210 | 211 | 当 gvim 启动时,它会读取 gvimrc 文件。这和启动 Vim 时用到的 vimrc 文件类似。 212 | gvimrc 文件可以被用来为 GUI 设定专用的选项和命令。例如,你可以设定 'lines' 的 213 | 值来指定窗口的大小: > 214 | 215 | :set lines=55 216 | 217 | 在终端里使用是没有用的,因为它的大小是固定的 (除了那些支持调整大小的 xterm)。 218 | Vim 在 vimrc 文件相同的地方找寻 gvimrc 文件。通常来说在 Unix 上是 219 | "~/.gvimrc"; MS-Windows 上是 "$VIM/_gvimrc"。$MYGVIMRC 环境变量设为该值,这样 220 | 你可以用下面的命令编辑此文件,如果有的话: > 221 | 222 | :edit $MYGVIMRC 223 | < 224 | 如果出于某种原因你不想使用通常的 gvimrc 文件,你可以利用 "-U" 参数来指定另 225 | 外的一个: > 226 | 227 | gvim -U thisrc ... 228 | 229 | 这使你可以用 gvim 来做另外一类编辑。例如你可以用另外的字体大小。 230 | 要完全跳过读取 gvimrc 文件: > 231 | 232 | gvim -U NONE ... 233 | 234 | ============================================================================== 235 | 236 | 下一章: |usr_32.txt| 撤销树 237 | 238 | 版权: 参见 |manual-copyright| vim:tw=78:ts=8:ft=help:norl: 239 | -------------------------------------------------------------------------------- /doc/usr_32.cnx: -------------------------------------------------------------------------------- 1 | *usr_32.txt* For Vim version 7.2. 最近更新: 2006年4月 2 | 3 | VIM USER MANUAL - by Bram Moolenaar 4 | 译者: Willis 5 | http://vimcdoc.sf.net 6 | 7 | 撤销树 8 | 9 | 10 | Vim 提供了多层撤销功能。如果你撤销了一些改变然后又进行了一些新的改变,你就在撤 11 | 销树里建立了一个分支。本文本讨论如何在分支间来回移动。 12 | 13 | |32.1| 为每次改变进行编号 14 | |32.2| 撤销树内任意跳转 15 | |32.3| 时间旅行 16 | 17 | 后一章: |usr_40.txt| 创建新的命令 18 | 前一章: |usr_31.txt| 利用 GUI 19 | 目录: |usr_toc.txt| 20 | 21 | ============================================================================== 22 | *32.1* 为每次改变进行编号 23 | 24 | |02.5| 一节,我们只讨论了单线的撤销/重做。其实,可以出现分支。当你撤销了一些改 25 | 变,又进行了一些新的改变,新的改变构成了撤销树的一个分支。 26 | 27 | 让我们从文本 "one" 开始。第一个要做的改变是附加 " too"。然后移动到第一个 'o' 28 | 上并修改为 'w'。这时我们有了两个改变,分别编号为 1 和 2,而文本有三个状态: 29 | 30 | one ~ 31 | | 32 | 改变 1 33 | | 34 | one too ~ 35 | | 36 | 改变 2 37 | | 38 | one two ~ 39 | 40 | 如果我们撤销一次改变,回到 "one too",然后把 "one" 换成 "me",我们就在撤销树里 41 | 建立了一个分支: 42 | 43 | one ~ 44 | | 45 | 改变 1 46 | | 47 | one too ~ 48 | / \ 49 | 改变 2 改变 3 50 | | | 51 | one two me too ~ 52 | 53 | 现在你可以用 |u| 命令来撤销。如果你做两次,你得到的是 "one"。用 |CTRL-R| 来重 54 | 做,你会到达 "one too"。多做一次 |CTRL-R| 又把你带到 "me too"。现在我们看到, 55 | 撤销/重做使用最近使用的分支,在树内上下移动。 56 | 57 | 这里重要的是改变发生的顺序。这里说的改变不考虑撤销和重做。每次改变后,你会得到 58 | 一个新的文本状态。 59 | 60 | 注意 只有改变被编号,上面显示的文本没有标识符。通常,通过它上方的改变号来引用 61 | 它。但有时也通过他下方的某个改变之一来引用。特别是在树内往上移动的时候,这样你 62 | 可以知道哪个改变刚刚被撤销掉。 63 | 64 | ============================================================================== 65 | *32.2* 撤销树内任意跳转 66 | 67 | 那么你现在怎么能到 "one two" 呢?你可以用这个命令: > 68 | 69 | :undo 2 70 | 71 | 文本现在成为了 "one two",因为它在改变号 2 之下。用 |:undo| 命令可以跳转到树内 72 | 任何改变之下的文本。 73 | 74 | 现在再进行一项改变: 把 "one" 改成 "not": 75 | 76 | one ~ 77 | | 78 | 改变 1 79 | | 80 | one too ~ 81 | / \ 82 | 改变 2 改变 3 83 | | | 84 | one two me too ~ 85 | | 86 | 改变 4 87 | | 88 | not two ~ 89 | 90 | 现在你又改了主意想回到 "me too" 了。用 |g-| 命令。它在时间点上往后退,也就是 91 | 说,它不是在树内上下移动,而是回到之前所在的改变。 92 | 93 | 你可以重复 |g-|,这样你会看到文本的变化过程: 94 | me too ~ 95 | one two ~ 96 | one too ~ 97 | one ~ 98 | 99 | 用 |g+| 时间点上往前进: 100 | one ~ 101 | one too ~ 102 | one two ~ 103 | me too ~ 104 | not two ~ 105 | 106 | |:undo| 用于你知道你要跳转到哪个改变的场合。|g-| 和 |g+| 用于你不知道具体要到 107 | 达的改变号的情况。 108 | 109 | 你可以在 |g-| 和 |g+| 之前加上计数来重复执行。 110 | 111 | ============================================================================== 112 | *32.3* 时间旅行 113 | 114 | 如果你在文本上工作了一段时间,撤销树变得相当大。这时你可能想回到几分钟之前的文 115 | 本上。 116 | 117 | 要看撤销树里有什么分支,用: > 118 | 119 | :undolist 120 | < number changes time ~ 121 | 3 2 16 seconds ago 122 | 4 3 5 seconds ago 123 | 124 | 这里你可以看到每个分支上叶结点的编号,还有改变发生的时间。假定我们在改变号 4 125 | 下方的 "not two" 那里,你可以这样回到十秒前: > 126 | 127 | :earlier 10s 128 | 129 | 取决于改变发生了多长时间,你回到达树内的某个位置。|:earlier| 命令参数可以用 130 | "m" 代表分钟,"h" 代表小时。用一个很大的数,你可以一路回到很久以前: > 131 | 132 | :earlier 10h 133 | 134 | 要 (再次) 进入未来世界,用 |:later| 命令: > 135 | 136 | :later 1m 137 | 138 | 参数可以用 "s"、"m" 和 "h",和 |:earlier| 完全类似。 139 | 140 | ============================================================================== 141 | 142 | 下一章: |usr_40.txt| 创建新的命令 143 | 144 | 版权: 参见 |manual-copyright| vim:tw=78:ts=8:ft=help:norl: 145 | -------------------------------------------------------------------------------- /doc/usr_43.cnx: -------------------------------------------------------------------------------- 1 | *usr_43.txt* For Vim version 7.2. 最近更新:2005年3月 2 | 3 | VIM USER MANUAL - by Bram Moolenaar 4 | 译者:lang2 http://vimcdoc.sf.net 5 | 6 | 使用文件类型 7 | 8 | 9 | 当你在编辑某一类型文件时,例如一个 C 程序或者一个 shell 脚本,你通常重复使用同 10 | 样的设置和键盘映射。很快你就会对每一次都要手动设置这些感到厌烦。这一章就告诉你 11 | 如果自动化这些设置。 12 | 13 | |43.1| 为一类文件编写的插件 14 | |43.2| 添加一个文件类型 15 | 16 | 后一章: |usr_44.txt| 自定义语法高亮 17 | 前一章: |usr_42.txt| 添加新的菜单 18 | 目录: |usr_toc.txt| 19 | 20 | ============================================================================== 21 | *43.1* 为一类文件编写的插件 *filetype-plugin* 22 | 23 | 如何使用文件类型插件已经在 |add-filetype-plugin| 这里讨论过了。不过你很可能对 24 | 缺省的最基本的设定不满意。假定对于所有 C 文件你希望将 'softtabstop' 选项定为 4 25 | 并定义一个插入三行注释的键盘映射。下面的两步可以做到: 26 | 27 | *your-runtime-dir* 28 | 1. 创建你自己的运行时目录。在 Unix 上通常是 "~/.vim"。在这个目录下创建 29 | "ftplugin" 目录: > 30 | 31 | mkdir ~/.vim 32 | mkdir ~/.vim/ftplugin 33 | < 34 | 如果你不是 Unix 用户的话,看看 'runtimepath' 选项的值就知道 Vim 在哪里找 35 | "ftplugin" 目录了: > 36 | 37 | set runtimepath 38 | 39 | < 通常你应该使用该列表中的第一个目录名 (第一个逗号之前的那个)。如果你不喜欢缺 40 | 省值的话,你也可以在 |vimrc| 文件里把自己的目录名加到 'runtimepath' 选项的 41 | 最前面。 42 | 43 | 2. 创建 "~/.vim/ftplugin/c.vim" 文件,并加入以下内容: > 44 | 45 | setlocal softtabstop=4 46 | noremap c o/**************/ 47 | 48 | 现在试着编辑一个 C 文件。你就会注意到 'softtabstop' 选项的值已经被设为 4 了。 49 | 但是当你编辑另外的文件的时候就会被复位到 0。那是因为用了 ":setlocal" 命令。这 50 | 样,对 'softtabstop' 选项的设置仅对本缓冲区有效。一旦你编辑另外一个文件,该选 51 | 项的值就会被设定成那个缓冲区的缺省值,或者最近一次被 ":set" 命令设定的值。 52 | 53 | 同样地,键盘映射 "\c" 在编辑另外一个缓冲区时就不起作用了。":map " 命令 54 | 建立了一个仅对当前缓冲区有效的映射。其它映射命令 ":map!",":vmap" 等也是如此。 55 | 映射中的 || 被 "maplocalleader" 的值所替代。 56 | 57 | 在下面这个目录里你可以找到一些文件类型插件的例子: > 58 | 59 | $VIMRUNTIME/ftplugin/ 60 | 61 | 进一步关于为某一类文件编写插件的知识可以在这里读到: |write-plugin|。 62 | 63 | ============================================================================== 64 | *43.2* 添加一个文件类型 65 | 66 | 如果你正在使用一种 Vim 不认识的文件,这一节告诉你怎么将这种文件介绍给 Vim。你 67 | 需要一个自己的运行时目录。参阅上面的 |your-runtime-dir|。 68 | 69 | 创建一个文件 "filetype.vim" 并加入一个为你的文件类型编写的自动命令。(关于自动 70 | 命令的阐述在 |40.3|。) 例: > 71 | 72 | augroup filetypedetect 73 | au BufNewFile,BufRead *.xyz setf xyz 74 | augroup END 75 | 76 | 这样所有以 ".xyz" 结尾的文件将被认为 "xyz" 类型的文件。":augroup" 命令将该自动 77 | 命令加入到 "filetypedetect" 组。这样做的作用是:当用户用 ":filetype off" 命令 78 | 的命令时,所有文件类型检测的自动命令都被忽略掉。"setf" 命令将 'filetype' 选项 79 | 设为该命令的参数,除非该选项已经被设置过。该命令保证 'filetype' 不会被重复设 80 | 定。 81 | 82 | 你可以使用各种各样的模式来匹配你的文件名。也可以包括目录名。见 83 | |autocmd-patterns|。例如,"/usr/share/scripts/" 目录下的文件都是 "ruby" 文件, 84 | 但没有文件扩展名。加入如下一行就可以了: > 85 | 86 | augroup filetypedetect 87 | au BufNewFile,BufRead *.xyz setf xyz 88 | au BufNewFile,BufRead /usr/share/scripts/* setf ruby 89 | augroup END 90 | 91 | 然而,如果你编辑一个叫做 /usr/share/scripts/README.txt 的文件,那可不是 ruby 92 | 文件。使用以 "*" 结尾的模式的不妥之处就在于它会匹配过多的文件。为了避免这种情 93 | 况,把那个 filetype.vim 文件放到位于 'runtimepath' 最后的那个目录。以 Unix 为 94 | 例,你可以用 "~/.vim/after/filetype.vim"。 95 | 现在你可以把文本文件的检测加入 ~/.vim/filetype.vim: > 96 | 97 | augroup filetypedetect 98 | au BufNewFile,BufRead *.txt setf text 99 | augroup END 100 | 101 | 'runtimepath' 首先找到该文件。最后才是 ~/.vim/after/filetype.vim: > 102 | 103 | augroup filetypedetect 104 | au BufNewFile,BufRead /usr/share/scripts/* setf ruby 105 | augroup END 106 | 107 | Vim 会在每一个 'runtimepath' 列出的目录中查找 "filetype.vim" 文件。先是 108 | ~/.vim/filetype.vim。匹配 *.txt 文件的自动命令是在那里定义的。接着 Vim 找到 109 | $VIMRUNTIME 中的 filetype.vim,因为该目录在 'runtimepath' 的中部。最后才找到 110 | ~/.vim/after/filetype.vim,然后其中检测 ruby 文件的自动命令才被添加到系统中。 111 | 现在你在编辑 /usr/share/scripts/README.txt 时,自动命令是以其被定义的次序一 112 | 一检测的。因为匹配 *.txt 模式,这样就会执行 "setf text" 命令,将文件类型设定为 113 | "text"。之后 ruby 文件的模式也匹配了,"setf ruby" 被执行。但是因为 'filetype' 114 | 已经被设为 "text" 了,后者就什么作用也不起了。 115 | 当你编辑文件 /usr/share/scripts/foobar 同样的自动命令被检测。但只有 ruby 文 116 | 件的那个匹配,因此 "setf ruby" 命令将 'filetype' 设为 ruby。 117 | 118 | 119 | 依 内 容 而 定 120 | 121 | 如果你的文件无法以其文件名决定类型,你可以通过其内容来确定。例如,很多脚本文件 122 | 都是这样开始的: 123 | 124 | #!/bin/xyz ~ 125 | 126 | 为了认出这个脚本,在你的运行时目录 (和你的 filetype.vim 在同一个目录) 下创建一 127 | 个 "scripts.vim" 文件。类似这样: > 128 | 129 | if did_filetype() 130 | finish 131 | endif 132 | if getline(1) =~ '^#!.*[/\\]xyz\>' 133 | setf xyz 134 | endif 135 | 136 | 先用 did_filetype() 可以避免你无谓的检查已经被检测出文件类型的文件。这样就不必 137 | 浪费时间了: "setf" 一点作用也没有。 138 | scripts.vim 文件被缺省的 filetype.vim 文件中的一个自动命令调用。因此,检测 139 | 的次序是: 140 | 141 | 1. 'runtimepath' 内 $VIMRUNTIME 之前目录中的 filetype.vim 文件 142 | 2. $VIMRUNTIME/filetype.vim 的前部 143 | 3. 'runtimepath' 内所有的 script.vim 文件 144 | 4. $VIMRUNTIME/filetype.vim 余下的部分 145 | 5. 'runtimepath' 内 $VIMRUNTIME 之后目录中的 filetype.vim 文件 146 | 147 | 如果这样对你还是不够的话,加入一个匹配所有文件的自动命令然后调用一个脚本或者执 148 | 行一个函数来检查文件的内容。 149 | 150 | ============================================================================== 151 | 152 | 下一章: |usr_44.txt| 自定义语法高亮 153 | 154 | 版权: 参见 |manual-copyright| vim:tw=78:ts=8:ft=help:norl: 155 | -------------------------------------------------------------------------------- /doc/usr_toc.cnx: -------------------------------------------------------------------------------- 1 | *usr_toc.txt* For Vim version 7.2. 最近更新: 2006年7月 2 | 3 | VIM USER MANUAL - by Bram Moolenaar 4 | 5 | 目 录 *user-manual* 6 | 7 | ============================================================================== 8 | 总览 ~ 9 | 10 | 初步知识 11 | |usr_01.txt| 关于本手册 12 | |usr_02.txt| Vim 初步 13 | |usr_03.txt| 移动 14 | |usr_04.txt| 做小改动 15 | |usr_05.txt| 选项设置 16 | |usr_06.txt| 使用语法高亮 17 | |usr_07.txt| 编辑多个文件 18 | |usr_08.txt| 分割窗口 19 | |usr_09.txt| 使用 GUI 版本 20 | |usr_10.txt| 做大修改 21 | |usr_11.txt| 从崩溃中恢复 22 | |usr_12.txt| 小窍门 23 | 24 | 高效的编辑 25 | |usr_20.txt| 快速键入命令行命令 26 | |usr_21.txt| 离开和回来 27 | |usr_22.txt| 寻找要编辑的文件 28 | |usr_23.txt| 编辑特殊文件 29 | |usr_24.txt| 快速插入 30 | |usr_25.txt| 编辑已经编排过的文本 31 | |usr_26.txt| 重复 32 | |usr_27.txt| 查找命令及模式 33 | |usr_28.txt| 折叠 34 | |usr_29.txt| 在代码间移动 35 | |usr_30.txt| 编辑程序 36 | |usr_31.txt| 利用 GUI 37 | |usr_32.txt| 撤销树 38 | 39 | 调节 Vim 40 | |usr_40.txt| 创建新的命令 41 | |usr_41.txt| 编写 Vim 脚本 42 | |usr_42.txt| 添加新的菜单 43 | |usr_43.txt| 使用文件类型 44 | |usr_44.txt| 自定义语法高亮 45 | |usr_45.txt| 选择你的语言 46 | 47 | 让 Vim 工作 48 | |usr_90.txt| 安装 Vim 49 | 50 | 51 | 参考手册 52 | |reference_toc| 关于所有命令更详细的信息 53 | 54 | 本手册的 HTML 版本和 PDF 版本可以从以下这个地址得到: 55 | 56 | http://vimdoc.sf.net (英文) 57 | http://vimcdoc.sf.net (中文) 58 | 59 | ============================================================================== 60 | 初步知识 ~ 61 | 62 | 从头至尾阅读这些文档可以学习基本的命令。 63 | 64 | |usr_01.txt| 关于本手册 65 | |01.1| 手册的两个部分 66 | |01.2| 安装了 Vim 之后 67 | |01.3| 教程使用说明 68 | |01.4| 版权声明 69 | 70 | |usr_02.txt| Vim 初步 71 | |02.1| 第一次运行 Vim 72 | |02.2| 插入文本 73 | |02.3| 移动光标 74 | |02.4| 删除字符 75 | |02.5| 撤销与重做 76 | |02.6| 其它编辑命令 77 | |02.7| 退出 78 | |02.8| 寻求帮助 79 | 80 | |usr_03.txt| 移动 81 | |03.1| 词移动 82 | |03.2| 移动到行首或行尾 83 | |03.3| 移动到指定字符 84 | |03.4| 括号匹配 85 | |03.5| 移动到指定的行 86 | |03.6| 确定当前位置 87 | |03.7| 滚屏 88 | |03.8| 简单查找 89 | |03.9| 简单的查找模式 90 | |03.10| 使用标记 91 | 92 | |usr_04.txt| 做小改动 93 | |04.1| 操作符与动作 94 | |04.2| 改变文本 95 | |04.3| 重复一个修改 96 | |04.4| 可视模式 97 | |04.5| 移动文本 98 | |04.6| 拷贝文本 99 | |04.7| 使用剪贴板 100 | |04.8| 文本对象 101 | |04.9| 替换模式 102 | |04.10| 结论 103 | 104 | |usr_05.txt| 选项设置 105 | |05.1| vimrc 文件 106 | |05.2| vimrc 示例解释 107 | |05.3| 简单键盘映射 108 | |05.4| 添加插件 109 | |05.5| 添加帮助 110 | |05.6| 选项窗口 111 | |05.7| 常用选项 112 | 113 | |usr_06.txt| 使用语法高亮 114 | |06.1| 功能激活 115 | |06.2| 颜色显示不出来或者显示出错误的颜色怎么办? 116 | |06.3| 使用不同颜色 117 | |06.4| 是否使用颜色 118 | |06.5| 带颜色打印 119 | |06.6| 深入阅读 120 | 121 | |usr_07.txt| 编辑多个文件 122 | |07.1| 编辑另一个文件 123 | |07.2| 文件列表 124 | |07.3| 从一个文件中跳到另一个文件 125 | |07.4| 备份文件 126 | |07.5| 文件间拷贝文本 127 | |07.6| 显示文件 128 | |07.7| 修改文件名 129 | 130 | |usr_08.txt| 分割窗口 131 | |08.1| 分割窗口 132 | |08.2| 用另一个文件分割窗口 133 | |08.3| 窗口大小 134 | |08.4| 垂直分割 135 | |08.5| 移动窗口 136 | |08.6| 对所有窗口执行命令 137 | |08.7| 用 vimdiff 显示区别 138 | |08.8| 杂项 139 | |08.9| 标签页 140 | 141 | |usr_09.txt| 使用 GUI 版本 142 | |09.1| GUI 版本的组件 143 | |09.2| 使用鼠标 144 | |09.3| 剪贴板 145 | |09.4| 选择模式 146 | 147 | |usr_10.txt| 做大修改 148 | |10.1| 记录与回放命令 149 | |10.2| 替换 150 | |10.3| 命令范围 151 | |10.4| global 命令 152 | |10.5| 可视块模式 153 | |10.6| 读、写部分文件内容 154 | |10.7| 编排文本 155 | |10.8| 改变大小写 156 | |10.9| 使用外部程序 157 | 158 | |usr_11.txt| 从崩溃中恢复 159 | |11.1| 基本恢复 160 | |11.2| 交换文件在哪 161 | |11.3| 是不是崩溃了? 162 | |11.4| 深入阅读 163 | 164 | |usr_12.txt| 小窍门 165 | |12.1| 单词替换 166 | |12.2| 把 "Last, First" 改成 "First Last" 167 | |12.3| 排序 168 | |12.4| 反排行顺序 169 | |12.5| 单词统计 170 | |12.6| 查阅 man 信息 171 | |12.7| 删除多余空格 172 | |12.8| 查找单词的使用位置 173 | 174 | ============================================================================== 175 | 高效的编辑 ~ 176 | 177 | 可以独立阅读的主题。 178 | 179 | |usr_20.txt| 快速键入命令行 180 | |20.1| 命令行编辑 181 | |20.2| 命令行缩写 182 | |20.3| 命令行补全 183 | |20.4| 命令行历史 184 | |20.5| 命令行窗口 185 | 186 | |usr_21.txt| 离开和回来 187 | |21.1| 挂起和继续 188 | |21.2| 执行 shell 命令 189 | |21.3| 记忆有关信息;viminfo 190 | |21.4| 会话 191 | |21.5| 视图 192 | |21.6| 模式行 193 | 194 | |usr_22.txt| 寻找要编辑的文件 195 | |22.1| 文件浏览器 196 | |22.2| 当前目录 197 | |22.3| 查找文件 198 | |22.4| 缓冲区列表 199 | 200 | |usr_23.txt| 编辑特殊文件 201 | |23.1| DOS, Mac 和 Unix 文件 202 | |23.2| 互联网上的文件 203 | |23.3| 加密 204 | |23.4| 二进制文件 205 | |23.5| 压缩文件 206 | 207 | |usr_24.txt| 快速插入 208 | |24.1| 更正 209 | |24.2| 显示匹配 210 | |24.3| 补全 211 | |24.4| 重复一次插入 212 | |24.5| 从另一行拷贝 213 | |24.6| 插入一个寄存器内容 214 | |24.7| 缩写 215 | |24.8| 插入特殊字符 216 | |24.9| 二合字母 217 | |24.10| 普通模式命令 218 | 219 | |usr_25.txt| 编辑带格式的文本 220 | |25.1| 断行 221 | |25.2| 对齐文本 222 | |25.3| 缩进和制表符 223 | |25.4| 对长行的处理 224 | |25.5| 编辑表格 225 | 226 | |usr_26.txt| 重复 227 | |26.1| 可视模式下的重复 228 | |26.2| 加与减 229 | |26.3| 改动多个文件 230 | |26.4| 在 shell 脚本里使用 Vim 231 | 232 | |usr_27.txt| 查找命令及模式 233 | |27.1| 忽略大小写 234 | |27.2| 在文件尾折返 235 | |27.3| 偏移 236 | |27.4| 匹配重复性模式 237 | |27.5| 多择一 238 | |27.6| 字符范围 239 | |27.7| 字符类 240 | |27.8| 匹配换行符 241 | |27.9| 举例 242 | 243 | |usr_28.txt| 折叠 244 | |28.1| 什么是折叠? 245 | |28.2| 手动折叠 246 | |28.3| 对折叠的操作 247 | |28.4| 存储和恢复折叠 248 | |28.5| 依缩进折叠 249 | |28.6| 依标志折叠 250 | |28.7| 依语法折叠 251 | |28.8| 依表达式折叠 252 | |28.9| 折叠未被改动的行 253 | |28.10| 使用哪种折叠办法呢? 254 | 255 | |usr_29.txt| 在代码间移动 256 | |29.1| 使用标签 257 | |29.2| 预览窗口 258 | |29.3| 在代码间移动 259 | |29.4| 查找全局标识符 260 | |29.5| 查找局部标识符 261 | 262 | |usr_30.txt| 编辑程序 263 | |30.1| 编译 264 | |30.2| C 文件缩进 265 | |30.3| 自动缩进 266 | |30.4| 其它缩进 267 | |30.5| 制表符和空格 268 | |30.6| 排版注释格式 269 | 270 | |usr_31.txt| 使用 GUI 271 | |31.1| 文件浏览器 272 | |31.2| 确认 273 | |31.3| 菜单快捷键 274 | |31.4| Vim 窗口位置与大小 275 | |31.5| 杂项 276 | 277 | |usr_32.txt| 撤销树 278 | |32.1| 为每次改变进行编号 279 | |32.2| 撤销树内任意跳转 280 | |32.3| 时间旅行 281 | 282 | ============================================================================== 283 | 调节 Vim ~ 284 | 285 | 告诉 Vim 如何工作。 286 | 287 | |usr_40.txt| 创建新的命令 288 | |40.1| 键映射 289 | |40.2| 定义命令行命令 290 | |40.3| 自动命令 291 | 292 | |usr_41.txt| 编写 Vim 脚本 293 | |41.1| 简介 294 | |41.2| 变量 295 | |41.3| 表达式 296 | |41.4| 条件语句 297 | |41.5| 执行一个表达式 298 | |41.6| 使用函数 299 | |41.7| 定义一个函数 300 | |41.8| 列表和字典 301 | |41.9| 例外 302 | |41.10| 其它讨论 303 | |41.11| 编写插件 304 | |41.12| 编写文件类型插件 305 | |41.13| 编写编译器插件 306 | |41.14| 编写快速载入的插件 307 | |41.15| 编写库脚本 308 | |41.16| 发布 Vim 脚本 309 | 310 | |usr_42.txt| 添加新的菜单 311 | |42.1| 简介 312 | |42.2| 菜单命令 313 | |42.3| 杂项 314 | |42.4| 工具栏和弹出菜单 315 | 316 | |usr_43.txt| 使用文件类型 317 | |43.1| 文件类型插件 318 | |43.2| 添加一个文件类型 319 | 320 | |usr_44.txt| 自定义语法高亮 321 | |44.1| 基本语法命令 322 | |44.2| 关键字 323 | |44.3| 匹配 324 | |44.4| 区域 325 | |44.5| 嵌套项目 326 | |44.6| 跟随组 327 | |44.7| 其它参数 328 | |44.8| 簇 329 | |44.9| 包含其它语法文件 330 | |44.10| 同步 331 | |44.11| 安装语法文件 332 | |44.12| 可移植的语法文件格式 333 | 334 | |usr_45.txt| 选择你的语言 335 | |45.1| 消息所用语言 336 | |45.2| 菜单所用语言 337 | |45.3| 使用其它种编码 338 | |45.4| 编辑其它编码的文件 339 | |45.5| 文本录入 340 | 341 | ============================================================================== 342 | 让 Vim 工作~ 343 | 344 | 在你使用 Vim 之前。 345 | 346 | |usr_90.txt| 安装 Vim 347 | |90.1| Unix 348 | |90.2| MS-Windows 349 | |90.3| 升级 350 | |90.4| 常见安装问题 351 | |90.5| 卸载 Vim 352 | 353 | ============================================================================== 354 | 355 | 版权: 见 |manual-copyright| vim:tw=78:ts=8:ft=help:norl: 356 | -------------------------------------------------------------------------------- /doc/workshop.cnx: -------------------------------------------------------------------------------- 1 | *workshop.txt* For Vim version 7.2. 最近更新: 2006年2月 2 | 3 | 4 | VIM 参考手册 作者: Gordon Prieur 5 | 译者: Willis 6 | http://vimcdoc.sf.net 7 | 8 | 9 | Sun Visual WorkShop 特性 *workshop* *workshop-support* 10 | 11 | 1. 简介 |workshop-intro| 12 | 2. 命令 |workshop-commands| 13 | 3. 编译 vim/gvim 以加入 WorkShop 支持 |workshop-compiling| 14 | 4. 为 Workshop 发布树配置 gvim |workshop-configure| 15 | 5. 获得最新版本的 XPM 库 |workshop-xpm| 16 | 17 | {Vi 无此功能} 18 | {仅在编译时加入 |+sun_workshop| 特性时才可用} 19 | 20 | ============================================================================== 21 | 1. 简介 *workshop-intro* 22 | 23 | Sun Visual Workshop 有一个 "供选择的编辑器" 功能,以便用户挑选他们喜欢的编辑器 24 | 调试程序。在 6.0 发布版本中,我们加入了 gvim 支持。 一个 workshop 调试会话包含 25 | 调试窗口和编辑窗口 (可能还有其他)。用户可以在编辑窗口执行众多调试指令,从而尽 26 | 量减少在窗口间切换的需要。 27 | 28 | Sun Visual Workshop 6 (也被称为 Forte Developer 6) 自带的 Vim 版本是 Vim 5.3。 29 | 我们这个版本的功能比 Visual Workshop 所带的 vim/gvim 更可靠。希望用 Vim 作为编 30 | 辑器的 VWS 用户应该自己编译这些源代码,并安装到自己的 workshop 发布树中。 31 | 32 | ============================================================================== 33 | 2. 命令 *workshop-commands* 34 | 35 | *:ws* *:wsverb* 36 | :ws[verb] verb 把 verb 传到 verb 执行程序。 37 | 38 | 把 verb 传到一个 workshop 函数,它收集参数并把该 verb 和相关数据通过 IPC 连接 39 | 发送给 workshop。 40 | 41 | ============================================================================== 42 | 3. 编译 vim/gvim 以加入 Workshop 支持 *workshop-compiling* 43 | 44 | 编译 vim 时,加入 FEAT_SUN_WORKSHOP 就可以打开所有必需的编译时选项,使 vim 可 45 | 以和 Visual WorkShop 协同使用。VMS 需要的功能用 VWS 发布版本提供的 Sun 编译器 46 | 编译通过并经过测试。这不是说这些功能不能用 gcc 编译或者运行,只不过我们不能保 47 | 证这一点。 48 | 49 | ============================================================================== 50 | 4. 为 Workshop 发布树配置 gvim *workshop-configure* 51 | 52 | 要使得支持 Sun Visual Workshop 6 的 gvim 能够编译,需要满足若干要求。 53 | 54 | o 应该用 VWS 的编译器而不是 gcc。我们既没有用 gcc 编译更没有测试过,因此不 55 | 能保证它能正常工作。 56 | 57 | o 必须提供自己的 XPM 库。下面 |workshop-xpm| 一节详述如何得到最新版 XPM。 58 | 59 | o 编辑 src 目录的 Makefile,删除 Sun Visual Workshop 行的注释。通过查找字 60 | 符串 FEAT_SUN_WORKSHOP,它们很容易找到。 61 | 62 | o 我们同时建议 gui 使用 Motif。这样 gvim 就会和 Sun Visual WorkShop 其他部 63 | 分有着相同的外观。 64 | 65 | 可用下面的配置行来 configure 带 Sun Visual WorkShop 支持的 vim: 66 | 67 | $ CC=cc configure --enable-workshop --enable-gui=motif \ 68 | -prefix=/contrib/contrib6/ 69 | 70 | VWS-install-dir 是 Sun Visual WorkShop 安装位置的主目录。缺省值是 71 | /opt/SUNWspro。vim 发布版本的安装一般要有 root 权限。然后,你还需要修改符号链 72 | 接 /bin/gvim,使之指向新安装目录里的 vim。 应是唯 73 | 一的版本字符串。我用的是 "vim" 加上等价于 version.h 中的 VIM_VERSION_SHORT 的 74 | 字符串。 75 | 76 | ============================================================================== 77 | 5. 获得最新的 XPM 库 *workshop-xpm* 78 | 79 | 支持 Motif 或 Athena 的 Vim 要显示图像,XPM 库是必需的。没有它,工具栏和标号 80 | (sign) 特性会被关闭。 81 | 82 | XPM 库由法国国立计算机科学与控制研究学院的 Arnaud Le Hors 提供,它可在 83 | http://koala.ilog.fr/ftp/pub/xpm 下载。撰写此文时,它的最新版本是 84 | xpm-3.4k-solaris.tgz,这是一个 gzip 压缩的 tar 文件。如果你建立目录 85 | /usr/local/xpm 然后在那里解包,就可以直接使用 Makefile 里去掉注释的行而无须修 86 | 改。如果安装在别的目录,请修改 src/Makefile 里的 XPM_DIR。 87 | 88 | vim:tw=78:ts=8:ft=help:norl: 89 | -------------------------------------------------------------------------------- /gvimrc: -------------------------------------------------------------------------------- 1 | if has("gui_macvim") 2 | " disable the original Cmd-T (open new tab) 3 | macmenu &File.New\ Tab key= 4 | " map Cmd-T to the CommandT plugin 5 | map :CommandT 6 | endif 7 | 8 | -------------------------------------------------------------------------------- /install.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | VIMHOME=~/.vim 3 | VIMFILE=~/.vimrc 4 | PWD=$(cd $(dirname $0); pwd) 5 | 6 | # function 7 | warn() { 8 | echo "WARNING: $1" >&2 9 | } 10 | error() { 11 | echo "ERROR: $1" >&2 12 | exit 1 13 | } 14 | echo "Installing hightman/vimrc from: $PWD ..." 15 | 16 | # backup exists file/dir 17 | echo "Checking to backup old configurations ..." 18 | for f in $VIMHOME $VIMFILE; do 19 | if [ -e "$f" ]; then 20 | if [ -e "${f}_bak" ]; then 21 | rm -rf ${f}_bak || error "Can't remove exists backup file: ${f}_bak" 22 | fi 23 | mv $f ${f}_bak || error "Can't rename exists file: $f" 24 | fi 25 | done 26 | 27 | # link the files 28 | echo "Create symbol links ..." 29 | ln -sf $PWD $VIMHOME 30 | ln -sf $PWD/vimrc $VIMFILE 31 | 32 | # init the bundles 33 | echo "Initlize bundles ..." 34 | cd $PWD 35 | mkdir tmp bak 36 | git submodule update --init 37 | vim +BundleInstall! +BundleClean +q +q 38 | 39 | # Command-T 40 | if [ -d bundle/command-t/ruby ]; then 41 | echo "Compilie the plugin: Command-T ..." 42 | (cd bundle/command-t/ruby/command-t && ruby extconf.rb && make) || warn "Failed to compile Command-T" 43 | fi 44 | 45 | # detect env path 46 | echo > vimrc.path 47 | file=vimrc.path 48 | path="/opt/local/bin /usr/local/bin /usr/bin" 49 | util="ctags jsctags phpctags php-cs-fixer xdg-open" 50 | echo "Detecting PATH of binary utils ..." 51 | for e in $util; do 52 | for p in $path; do 53 | if [ -x "$p/$e" ]; then 54 | e2=`echo $e | sed 's#-#_#g'` 55 | eval "x_$e2=$p/$e" 56 | break 57 | fi 58 | done 59 | done 60 | echo '" Path of Utils' > $file 61 | echo '" Notice: This file generated by install script automatically' >> $file 62 | if [ ! -z "$x_ctags" ]; then 63 | echo "let g:tagbar_ctags_bin = '$x_ctags'" >> $file 64 | echo "let g:easytags_cmd = '$x_ctags'" >> $file 65 | fi 66 | if [ ! -z "$x_jsctags" ]; then 67 | echo "let g:tagbar_type_javascript = {" >> $file 68 | echo " \ 'ctagsbin': '$x_jsctags'" >> $file 69 | echo "\ }" >> $file 70 | fi 71 | if [ ! -z "$x_phpctags" ]; then 72 | echo "let g:tagbar_phpctags_bin = '$x_phpctags'" >> $file 73 | fi 74 | if [ ! -z "$x_php_cs_fixer" ]; then 75 | echo "let g:php_cs_fixer_path = '$x_php_cs_fixer'" >> $file 76 | fi 77 | # open online doc:wq 78 | if [ ! -z "$x_xdg_open" ]; then 79 | echo "let g:jquery_doc_command = '$x_xdg_open'" >> $file 80 | echo "let g:php_search_doc_command = '$x_xdg_open'" >> $file 81 | fi 82 | if ! grep markdown ~/.ctags > /dev/null 2>&1; then 83 | cat >> ~/.ctags <