Removed vim, since it is now available as an optionalpackage.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35848 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
@@ -58,7 +58,7 @@ SYSTEM_BIN = "[" addattr alert arp base64 basename bash bc beep bootman bzip2
|
|||||||
tput tr traceroute translate trash true truncate tsort tty
|
tput tr traceroute translate trash true truncate tsort tty
|
||||||
uname unchop unexpand unmount uniq unlink unrar unshar unzip unzipsfx
|
uname unchop unexpand unmount uniq unlink unrar unshar unzip unzipsfx
|
||||||
<bin>updatedb uptime urlwrapper useradd uudecode uuencode
|
<bin>updatedb uptime urlwrapper useradd uudecode uuencode
|
||||||
vdir version vim vmstat waitfor watch wc wget whoami xargs xres yes
|
vdir version vmstat waitfor watch wc wget whoami xargs xres yes
|
||||||
zdiff zforce zgrep zip zipcloak <bin>zipgrep zipnote zipsplit zmore znew
|
zdiff zforce zgrep zip zipcloak <bin>zipgrep zipnote zipsplit zmore znew
|
||||||
;
|
;
|
||||||
|
|
||||||
|
|||||||
@@ -231,7 +231,6 @@ SubInclude HAIKU_TOP src bin screen_blanker ;
|
|||||||
SubInclude HAIKU_TOP src bin screenmode ;
|
SubInclude HAIKU_TOP src bin screenmode ;
|
||||||
SubInclude HAIKU_TOP src bin sharutils ;
|
SubInclude HAIKU_TOP src bin sharutils ;
|
||||||
SubInclude HAIKU_TOP src bin unrar ;
|
SubInclude HAIKU_TOP src bin unrar ;
|
||||||
SubInclude HAIKU_TOP src bin vim ;
|
|
||||||
SubInclude HAIKU_TOP src bin zic ;
|
SubInclude HAIKU_TOP src bin zic ;
|
||||||
|
|
||||||
# RCS commands
|
# RCS commands
|
||||||
|
|||||||
@@ -1,23 +0,0 @@
|
|||||||
Vim Vi IMproved. A clone of the UNIX text editor Vi. Very useful
|
|
||||||
for editing programs and other plain ASCII text. Full Vi
|
|
||||||
compatibility and includes all Ex commands. Extra features
|
|
||||||
above Vi: Multilevel undo, multiple windows, syntax
|
|
||||||
highlighting, command line history, folding, improved command
|
|
||||||
line editing, command typeahead display, command to display
|
|
||||||
yank buffers, possibility to edit binary files, file name
|
|
||||||
stack, support for Manx QuickFix and other compiler's error
|
|
||||||
messages, shows current file name in window title, on-line
|
|
||||||
help, rectangular cut/paste, etc., etc., etc...
|
|
||||||
|
|
||||||
Version 6.3. Also runs under UNIX, MSDOS and other systems.
|
|
||||||
vim63rt.tgz contains the documentation and syntax files.
|
|
||||||
vim63bin.tgz contains the binaries.
|
|
||||||
vim63src.tgz contains the sources.
|
|
||||||
Author: Bram Moolenaar et al.
|
|
||||||
|
|
||||||
|
|
||||||
Xxd Hex dumper and reader. Can be used to view files as hex, edit
|
|
||||||
them and write them back. Can also be used to patch files.
|
|
||||||
|
|
||||||
Version 1.8 (1997 May 22)
|
|
||||||
Author: Juergen Weigert
|
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
SubDir HAIKU_TOP src bin vim ;
|
|
||||||
|
|
||||||
SubInclude HAIKU_TOP src bin vim src ;
|
|
||||||
File diff suppressed because it is too large
Load Diff
@@ -1,19 +0,0 @@
|
|||||||
README_bindos.txt for version 6.3 of Vim: Vi IMproved.
|
|
||||||
|
|
||||||
See "README.txt" for general information about Vim.
|
|
||||||
See "README_dos.txt" for installation instructions for MS-DOS and MS-Windows.
|
|
||||||
These files are in the runtime archive (vim60rt.zip).
|
|
||||||
|
|
||||||
|
|
||||||
There are several binary distributions of Vim for the PC. You would normally
|
|
||||||
pick only one of them, but it's also possible to install several.
|
|
||||||
These ones are available (the version number may differ):
|
|
||||||
vim60d16.zip 16 bit DOS version
|
|
||||||
vim60d32.zip 32 bit DOS version
|
|
||||||
vim60w32.zip Windows 95/98/NT/etc. console version
|
|
||||||
gvim60.zip Windows 95/98/NT/etc. GUI version
|
|
||||||
gvim60ole.zip Windows 95/98/NT/etc. GUI version with OLE
|
|
||||||
gvim60_s.zip Windows 3.1 GUI version
|
|
||||||
|
|
||||||
You MUST also get the runtime archive (vim60rt.zip).
|
|
||||||
The sources are also available (vim60src.zip).
|
|
||||||
@@ -1,61 +0,0 @@
|
|||||||
README_extra.txt for version 6.3 of Vim: Vi IMproved.
|
|
||||||
|
|
||||||
The extra archive of Vim is to be used in combination with the source archive
|
|
||||||
(vim-6.0-src.tar.gz). The extra archive is useless without it.
|
|
||||||
|
|
||||||
For more information, see the "README.txt" file that comes with the runtime
|
|
||||||
archive (vim-6.0-rt.tar.gz). To be able to run Vim you MUST get the runtime
|
|
||||||
archive too!
|
|
||||||
|
|
||||||
The extra archive plus the source and runtime achives make up the complete
|
|
||||||
sources of Vim for all systems.
|
|
||||||
|
|
||||||
|
|
||||||
The extra archive contains:
|
|
||||||
|
|
||||||
Farsi Files for the Farsi (persian) language. If you don't know
|
|
||||||
what Farsi is, this is not for you.
|
|
||||||
|
|
||||||
if_sniff Interface to SNiFF. If you don't know what SNiFF is, this is
|
|
||||||
not for you.
|
|
||||||
|
|
||||||
gui_amiga
|
|
||||||
os_amiga Files for the Amiga port.
|
|
||||||
|
|
||||||
gui_riscos
|
|
||||||
os_riscos Files for the RISC OS port.
|
|
||||||
|
|
||||||
gui_beos
|
|
||||||
os_beos Files for the BeOS port.
|
|
||||||
|
|
||||||
os_msdos
|
|
||||||
os_dos Files for the MS-DOS port.
|
|
||||||
|
|
||||||
gui_mac
|
|
||||||
os_mac Files for the Mac port.
|
|
||||||
|
|
||||||
os_mint Files for the Atari Mint port.
|
|
||||||
|
|
||||||
os_os2 Files for the OS/2 port.
|
|
||||||
tee Extra program for OS/2.
|
|
||||||
|
|
||||||
os_vms Files for the VMS port.
|
|
||||||
|
|
||||||
os_w32
|
|
||||||
os_win32 Files for the Win32 port.
|
|
||||||
|
|
||||||
gui_w32 Files for the Win32 GUI.
|
|
||||||
Gvim_vc.mak MS Visual C++ makefile for the Win32 GUI.
|
|
||||||
rgb.txt File with color definitions for the Win32 GUI.
|
|
||||||
|
|
||||||
if_ole OLE automation interface, for MS Windows 95 and NT.
|
|
||||||
|
|
||||||
VisVim Integration of Win32 GUI with MS Visual Developer Studio.
|
|
||||||
|
|
||||||
GvimExt DLL for the "Edit with Vim" context menu entry
|
|
||||||
|
|
||||||
nsis NSIS script to build the self-installing MS-Windows exe
|
|
||||||
|
|
||||||
*.man Preprocessed manual pages.
|
|
||||||
|
|
||||||
file_select.vim Vim script to browse directories (Unix only).
|
|
||||||
@@ -1,10 +0,0 @@
|
|||||||
README_src.txt for version 6.3 of Vim: Vi IMproved.
|
|
||||||
|
|
||||||
The source archive contains the files needed to compile Vim on Unix systems.
|
|
||||||
It is packed for Unix systems (NL line separator). It is also used for other
|
|
||||||
systems in combination with the extra archive (vim-6.0-extra.tar.gz, in the
|
|
||||||
"extra" directory of ftp.vim.org).
|
|
||||||
|
|
||||||
For more information, see the README.txt file that comes with the runtime
|
|
||||||
archive (vim-6.0-rt.tar.gz). To be able to run Vim you MUST get the runtime
|
|
||||||
archive too!
|
|
||||||
Vendored
-6
@@ -1,6 +0,0 @@
|
|||||||
#! /bin/sh
|
|
||||||
|
|
||||||
# This is just a stub for the Unix configure script, to provide support for
|
|
||||||
# doing "./configure" in the top Vim directory.
|
|
||||||
|
|
||||||
cd src && ./configure "$@"
|
|
||||||
@@ -1,62 +0,0 @@
|
|||||||
SubDir HAIKU_TOP src bin vim runtime ;
|
|
||||||
|
|
||||||
# rules difference and glob-tree come from boost project
|
|
||||||
# (C) Copyright David Abrahams and Carlos Pinto Coelho 2001. Permission to
|
|
||||||
# copy, use, modify, sell and distribute this software is granted provided this
|
|
||||||
# copyright notice appears in all copies. This software is provided "as is"
|
|
||||||
# without express or implied warranty, and with no claim as to its suitability
|
|
||||||
# for any purpose.
|
|
||||||
|
|
||||||
# difference listB : listA
|
|
||||||
# returns the elements of B that are not in A
|
|
||||||
rule difference
|
|
||||||
{
|
|
||||||
local result = ;
|
|
||||||
local element ;
|
|
||||||
for element in $(<)
|
|
||||||
{
|
|
||||||
if ! ( $(element) in $(>) )
|
|
||||||
{
|
|
||||||
result += $(element) ;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return $(result) ;
|
|
||||||
}
|
|
||||||
|
|
||||||
# Recursive version of GLOB. Builds the glob of files while
|
|
||||||
# also searching in the subdirectories of the given root.
|
|
||||||
#
|
|
||||||
rule glob-tree
|
|
||||||
{
|
|
||||||
local e ;
|
|
||||||
local f = [ GLOB $(<) : $(>) ] ;
|
|
||||||
local files ;
|
|
||||||
for e in $(f)
|
|
||||||
{
|
|
||||||
# TODO: What about .svn?
|
|
||||||
if $(e:D=) != CVS { files += $(e) ; }
|
|
||||||
}
|
|
||||||
local d = [ difference [ GLOB $(<) : * ] : $(files) ] ;
|
|
||||||
for e in $(d)
|
|
||||||
{
|
|
||||||
if ! ( $(e:D=) in . .. ) { files += [ glob-tree $(e) : $(>) ] ; }
|
|
||||||
}
|
|
||||||
return $(files) ;
|
|
||||||
}
|
|
||||||
|
|
||||||
# TODO: This should be done in HaikuImage.
|
|
||||||
# local VIMDIR = $(HAIKU_ETC_DIR) vim vim63 ;
|
|
||||||
# local vimRuntimeFiles = [ glob-tree $(SUBDIR) : *.vim *.txt *.info *.ps ] ;
|
|
||||||
#
|
|
||||||
# for file in [ FGristFiles $(vimRuntimeFiles) ]
|
|
||||||
# {
|
|
||||||
# local dir = [ FSplitPath $(file:D) ] ;
|
|
||||||
# local sdir = [ FSplitPath $(SUBDIR) ] ;
|
|
||||||
# FStripCommon dir : sdir ;
|
|
||||||
# local grist = [ FGrist etc vim vim63 $(dir) $(file:B) ] ;
|
|
||||||
# local destfile = $(file:D=:G=$(grist)) ;
|
|
||||||
# MakeLocate $(destfile) : [ FDirName $(VIMDIR) $(dir) ] ;
|
|
||||||
# File $(destfile) : $(file) ;
|
|
||||||
# LocalClean clean : $(destfile) ;
|
|
||||||
# SEARCH on $(file) = $(SEARCH_SOURCE) [ FDirName $(SUBDIR) $dir) ] ;
|
|
||||||
# }
|
|
||||||
@@ -1,86 +0,0 @@
|
|||||||
:" Use this script to create the file "bugreport.txt", which contains
|
|
||||||
:" information about the environment of a possible bug in Vim.
|
|
||||||
:"
|
|
||||||
:" Maintainer: Bram Moolenaar <Bram@vim.org>
|
|
||||||
:" Last change: 2001 Feb 02
|
|
||||||
:"
|
|
||||||
:" To use inside Vim:
|
|
||||||
:" :so $VIMRUNTIME/bugreport.vim
|
|
||||||
:" Or, from the command line:
|
|
||||||
:" vim -s $VIMRUNTIME/bugreport.vim
|
|
||||||
:"
|
|
||||||
:" The "if 1" lines are to avoid error messages when expression evaluation is
|
|
||||||
:" not compiled in.
|
|
||||||
:"
|
|
||||||
:if 1
|
|
||||||
: let more_save = &more
|
|
||||||
:endif
|
|
||||||
:set nomore
|
|
||||||
:if has("unix")
|
|
||||||
: !echo "uname -a" >bugreport.txt
|
|
||||||
: !uname -a >>bugreport.txt
|
|
||||||
:endif
|
|
||||||
:redir >>bugreport.txt
|
|
||||||
:version
|
|
||||||
:if 1
|
|
||||||
: func <SID>CheckDir(n)
|
|
||||||
: if isdirectory(a:n)
|
|
||||||
: echo 'directory "' . a:n . '" exists'
|
|
||||||
: else
|
|
||||||
: echo 'directory "' . a:n . '" does NOT exist'
|
|
||||||
: endif
|
|
||||||
: endfun
|
|
||||||
: func <SID>CheckFile(n)
|
|
||||||
: if filereadable(a:n)
|
|
||||||
: echo '"' . a:n . '" is readable'
|
|
||||||
: else
|
|
||||||
: echo '"' . a:n . '" is NOT readable'
|
|
||||||
: endif
|
|
||||||
: endfun
|
|
||||||
: echo "--- Directories and Files ---"
|
|
||||||
: echo '$VIM = "' . $VIM . '"'
|
|
||||||
: call <SID>CheckDir($VIM)
|
|
||||||
: echo '$VIMRUNTIME = "' . $VIMRUNTIME . '"'
|
|
||||||
: call <SID>CheckDir($VIMRUNTIME)
|
|
||||||
: call <SID>CheckFile(&helpfile)
|
|
||||||
: call <SID>CheckFile(fnamemodify(&helpfile, ":h") . "/tags")
|
|
||||||
: call <SID>CheckFile($VIMRUNTIME . "/menu.vim")
|
|
||||||
: call <SID>CheckFile($VIMRUNTIME . "/filetype.vim")
|
|
||||||
: call <SID>CheckFile($VIMRUNTIME . "/syntax/synload.vim")
|
|
||||||
: delfun <SID>CheckDir
|
|
||||||
: delfun <SID>CheckFile
|
|
||||||
:endif
|
|
||||||
:set all
|
|
||||||
:set termcap
|
|
||||||
:if has("autocmd")
|
|
||||||
: au
|
|
||||||
:endif
|
|
||||||
:if 1
|
|
||||||
: echo "--- Normal/Visual mode mappings ---"
|
|
||||||
:endif
|
|
||||||
:map
|
|
||||||
:if 1
|
|
||||||
: echo "--- Insert/Command-line mode mappings ---"
|
|
||||||
:endif
|
|
||||||
:map!
|
|
||||||
:if 1
|
|
||||||
: echo "--- Abbreviations ---"
|
|
||||||
:endif
|
|
||||||
:ab
|
|
||||||
:if 1
|
|
||||||
: echo "--- Highlighting ---"
|
|
||||||
:endif
|
|
||||||
:highlight
|
|
||||||
:if 1
|
|
||||||
: echo "--- Variables ---"
|
|
||||||
:endif
|
|
||||||
:if 1
|
|
||||||
: let
|
|
||||||
:endif
|
|
||||||
:redir END
|
|
||||||
:set more&
|
|
||||||
:if 1
|
|
||||||
: let &more = more_save
|
|
||||||
: unlet more_save
|
|
||||||
:endif
|
|
||||||
:e bugreport.txt
|
|
||||||
@@ -1,61 +0,0 @@
|
|||||||
README.txt for color scheme files
|
|
||||||
|
|
||||||
These files are used for the ":colorscheme" command. They appear in the
|
|
||||||
Edit/Color Scheme menu in the GUI.
|
|
||||||
|
|
||||||
|
|
||||||
Hints for writing a color scheme file:
|
|
||||||
|
|
||||||
There are two basic ways to define a color scheme:
|
|
||||||
|
|
||||||
1. Define a new Normal color and set the 'background' option accordingly.
|
|
||||||
set background={light or dark}
|
|
||||||
highlight clear
|
|
||||||
highlight Normal ...
|
|
||||||
...
|
|
||||||
|
|
||||||
2. Use the default Normal color and automatically adjust to the value of
|
|
||||||
'background'.
|
|
||||||
highlight clear Normal
|
|
||||||
set background&
|
|
||||||
highlight clear
|
|
||||||
if &background == "light"
|
|
||||||
highlight Error ...
|
|
||||||
...
|
|
||||||
else
|
|
||||||
highlight Error ...
|
|
||||||
...
|
|
||||||
endif
|
|
||||||
|
|
||||||
You can use ":highlight clear" to reset everything to the defaults, and then
|
|
||||||
change the groups that you want differently. This also will work for groups
|
|
||||||
that are added in later versions of Vim.
|
|
||||||
Note that ":highlight clear" uses the value of 'background', thus set it
|
|
||||||
before this command.
|
|
||||||
Some attributes (e.g., bold) might be set in the defaults that you want
|
|
||||||
removed in your color scheme. Use something like "gui=NONE" to remove the
|
|
||||||
attributes.
|
|
||||||
|
|
||||||
To see which highlight group is used where, find the help for
|
|
||||||
"highlight-groups" and "group-name".
|
|
||||||
|
|
||||||
You can use ":highlight" to find out the current colors. Exception: the
|
|
||||||
ctermfg and ctermbg values are numbers, which are only valid for the current
|
|
||||||
terminal. Use the color names instead. See ":help cterm-colors".
|
|
||||||
|
|
||||||
The default color settings can be found in the source file src/syntax.c.
|
|
||||||
Search for "highlight_init".
|
|
||||||
|
|
||||||
If you think you have a color scheme that is good enough to be used by others,
|
|
||||||
please check the following items:
|
|
||||||
|
|
||||||
- Does it work in a color terminal as well as in the GUI?
|
|
||||||
- Is 'background' either used or appropriately set to "light" or "dark"?
|
|
||||||
- Try setting 'hlsearch' and searching for a pattern, is the match easy to
|
|
||||||
spot?
|
|
||||||
- Split a window with ":split" and ":vsplit". Are the status lines and
|
|
||||||
vertical separators clearly visible?
|
|
||||||
- In the GUI, is it easy to find the cursor, also in a file with lots of
|
|
||||||
syntax highlighting?
|
|
||||||
- Do not use hard coded escape sequences, these will not work in other
|
|
||||||
terminals. Always use color names or #RRGGBB for the GUI.
|
|
||||||
@@ -1,77 +0,0 @@
|
|||||||
" local syntax file - set colors on a per-machine basis:
|
|
||||||
" vim: tw=0 ts=4 sw=4
|
|
||||||
" Vim color file
|
|
||||||
" Maintainer: Steven Vertigan <[email protected]>
|
|
||||||
" Last Change: 2003 May 11
|
|
||||||
" Revision #4: Support for new "Underline" group. Removed superfluous html
|
|
||||||
" formatting.
|
|
||||||
|
|
||||||
set background=dark
|
|
||||||
hi clear
|
|
||||||
if exists("syntax_on")
|
|
||||||
syntax reset
|
|
||||||
endif
|
|
||||||
let g:colors_name = "blue"
|
|
||||||
hi Normal guifg=white guibg=darkBlue
|
|
||||||
hi Normal ctermfg=white ctermbg=darkBlue
|
|
||||||
hi NonText guifg=magenta ctermfg=lightMagenta
|
|
||||||
hi comment guifg=gray gui=bold
|
|
||||||
hi comment ctermfg=gray
|
|
||||||
hi constant guifg=cyan ctermfg=cyan
|
|
||||||
hi identifier guifg=gray ctermfg=gray
|
|
||||||
hi statement guifg=yellow gui=none ctermfg=yellow
|
|
||||||
hi preproc guifg=green ctermfg=green
|
|
||||||
hi type guifg=orange ctermfg=darkYellow
|
|
||||||
hi special guifg=magenta ctermfg=lightMagenta
|
|
||||||
hi Underlined guifg=cyan ctermfg=cyan
|
|
||||||
hi Underlined gui=underline cterm=underline
|
|
||||||
|
|
||||||
hi ErrorMsg guifg=orange guibg=darkBlue
|
|
||||||
hi ErrorMsg ctermfg=lightRed
|
|
||||||
hi WarningMsg guifg=cyan guibg=darkBlue gui=bold
|
|
||||||
hi WarningMsg ctermfg=cyan
|
|
||||||
hi ModeMsg guifg=yellow gui=NONE
|
|
||||||
hi ModeMsg ctermfg=yellow
|
|
||||||
hi MoreMsg guifg=yellow gui=NONE
|
|
||||||
hi MoreMsg ctermfg=yellow
|
|
||||||
hi Error guifg=red guibg=darkBlue gui=underline
|
|
||||||
hi Error ctermfg=red
|
|
||||||
|
|
||||||
hi Todo guifg=black guibg=orange
|
|
||||||
hi Todo ctermfg=black ctermbg=darkYellow
|
|
||||||
hi Cursor guifg=black guibg=white
|
|
||||||
hi Cursor ctermfg=black ctermbg=white
|
|
||||||
hi Search guifg=black guibg=orange
|
|
||||||
hi Search ctermfg=black ctermbg=darkYellow
|
|
||||||
hi IncSearch guifg=black guibg=yellow
|
|
||||||
hi IncSearch ctermfg=black ctermbg=darkYellow
|
|
||||||
hi LineNr guifg=pink ctermfg=lightMagenta
|
|
||||||
hi title guifg=white gui=bold cterm=bold
|
|
||||||
|
|
||||||
hi StatusLineNC gui=NONE guifg=black guibg=blue
|
|
||||||
hi StatusLineNC ctermfg=black ctermbg=blue
|
|
||||||
hi StatusLine gui=bold guifg=cyan guibg=blue
|
|
||||||
hi StatusLine ctermfg=cyan ctermbg=blue
|
|
||||||
|
|
||||||
hi label guifg=yellow ctermfg=yellow
|
|
||||||
hi operator guifg=orange gui=bold ctermfg=darkYellow
|
|
||||||
hi clear Visual
|
|
||||||
hi Visual term=reverse
|
|
||||||
hi Visual ctermfg=black ctermbg=darkCyan
|
|
||||||
hi Visual guifg=black guibg=darkCyan
|
|
||||||
|
|
||||||
hi DiffChange guibg=darkGreen guifg=black
|
|
||||||
hi DiffChange ctermbg=darkGreen ctermfg=black
|
|
||||||
hi DiffText guibg=olivedrab guifg=black
|
|
||||||
hi DiffText ctermbg=lightGreen ctermfg=black
|
|
||||||
hi DiffAdd guibg=slateblue guifg=black
|
|
||||||
hi DiffAdd ctermbg=blue ctermfg=black
|
|
||||||
hi DiffDelete guibg=coral guifg=black
|
|
||||||
hi DiffDelete ctermbg=cyan ctermfg=black
|
|
||||||
|
|
||||||
hi Folded guibg=orange guifg=black
|
|
||||||
hi Folded ctermbg=yellow ctermfg=black
|
|
||||||
hi FoldColumn guibg=gray30 guifg=black
|
|
||||||
hi FoldColumn ctermbg=gray ctermfg=black
|
|
||||||
hi cIf0 guifg=gray ctermfg=gray
|
|
||||||
|
|
||||||
@@ -1,62 +0,0 @@
|
|||||||
" Vim color file
|
|
||||||
" Maintainer: Bohdan Vlasyuk <[email protected]>
|
|
||||||
" Last Change: 2002 Mar 09
|
|
||||||
|
|
||||||
" darkblue -- for those who prefer dark background
|
|
||||||
" [note: looks bit uglier with come terminal palettes,
|
|
||||||
" but is fine on default linux console palette.]
|
|
||||||
|
|
||||||
set bg=dark
|
|
||||||
hi clear
|
|
||||||
if exists("syntax_on")
|
|
||||||
syntax reset
|
|
||||||
endif
|
|
||||||
|
|
||||||
let colors_name = "darkblue"
|
|
||||||
|
|
||||||
hi Normal guifg=#c0c0c0 guibg=#000040 ctermfg=gray ctermbg=black
|
|
||||||
hi ErrorMsg guifg=#ffffff guibg=#287eff ctermfg=white ctermbg=lightblue
|
|
||||||
hi Visual guifg=#8080ff guibg=fg gui=reverse ctermfg=lightblue ctermbg=fg cterm=reverse
|
|
||||||
hi VisualNOS guifg=#8080ff guibg=fg gui=reverse,underline ctermfg=lightblue ctermbg=fg cterm=reverse,underline
|
|
||||||
hi Todo guifg=#d14a14 guibg=#1248d1 ctermfg=red ctermbg=darkblue
|
|
||||||
hi Search guifg=#90fff0 guibg=#2050d0 ctermfg=white ctermbg=darkblue cterm=underline term=underline
|
|
||||||
hi IncSearch guifg=#b0ffff guibg=#2050d0 ctermfg=darkblue ctermbg=gray
|
|
||||||
|
|
||||||
hi SpecialKey guifg=cyan ctermfg=darkcyan
|
|
||||||
hi Directory guifg=cyan ctermfg=cyan
|
|
||||||
hi Title guifg=magenta gui=none ctermfg=magenta cterm=bold
|
|
||||||
hi WarningMsg guifg=red ctermfg=red
|
|
||||||
hi WildMenu guifg=yellow guibg=black ctermfg=yellow ctermbg=black cterm=none term=none
|
|
||||||
hi ModeMsg guifg=#22cce2 ctermfg=lightblue
|
|
||||||
hi MoreMsg ctermfg=darkgreen ctermfg=darkgreen
|
|
||||||
hi Question guifg=green gui=none ctermfg=green cterm=none
|
|
||||||
hi NonText guifg=#0030ff ctermfg=darkblue
|
|
||||||
|
|
||||||
hi StatusLine guifg=blue guibg=darkgray gui=none ctermfg=blue ctermbg=gray term=none cterm=none
|
|
||||||
hi StatusLineNC guifg=black guibg=darkgray gui=none ctermfg=black ctermbg=gray term=none cterm=none
|
|
||||||
hi VertSplit guifg=black guibg=darkgray gui=none ctermfg=black ctermbg=gray term=none cterm=none
|
|
||||||
|
|
||||||
hi Folded guifg=#808080 guibg=#000040 ctermfg=darkgrey ctermbg=black cterm=bold term=bold
|
|
||||||
hi FoldColumn guifg=#808080 guibg=#000040 ctermfg=darkgrey ctermbg=black cterm=bold term=bold
|
|
||||||
hi LineNr guifg=#90f020 ctermfg=green cterm=none
|
|
||||||
|
|
||||||
hi DiffAdd guibg=darkblue ctermbg=darkblue term=none cterm=none
|
|
||||||
hi DiffChange guibg=darkmagenta ctermbg=magenta cterm=none
|
|
||||||
hi DiffDelete ctermfg=blue ctermbg=cyan gui=bold guifg=Blue guibg=DarkCyan
|
|
||||||
hi DiffText cterm=bold ctermbg=red gui=bold guibg=Red
|
|
||||||
|
|
||||||
hi Cursor guifg=#000020 guibg=#ffaf38 ctermfg=bg ctermbg=brown
|
|
||||||
hi lCursor guifg=#ffffff guibg=#000000 ctermfg=bg ctermbg=darkgreen
|
|
||||||
|
|
||||||
|
|
||||||
hi Comment guifg=#80a0ff ctermfg=darkred
|
|
||||||
hi Constant ctermfg=magenta guifg=#ffa0a0 cterm=none
|
|
||||||
hi Special ctermfg=brown guifg=Orange cterm=none gui=none
|
|
||||||
hi Identifier ctermfg=cyan guifg=#40ffff cterm=none
|
|
||||||
hi Statement ctermfg=yellow cterm=none guifg=#ffff60 gui=none
|
|
||||||
hi PreProc ctermfg=magenta guifg=#ff80ff gui=none cterm=none
|
|
||||||
hi type ctermfg=green guifg=#60ff60 gui=none cterm=none
|
|
||||||
hi Underlined cterm=underline term=underline
|
|
||||||
hi Ignore guifg=bg ctermfg=bg
|
|
||||||
|
|
||||||
|
|
||||||
@@ -1,23 +0,0 @@
|
|||||||
" Vim color file
|
|
||||||
" Maintainer: Bram Moolenaar <[email protected]>
|
|
||||||
" Last Change: 2001 Jul 23
|
|
||||||
|
|
||||||
" This is the default color scheme. It doesn't define the Normal
|
|
||||||
" highlighting, it uses whatever the colors used to be.
|
|
||||||
|
|
||||||
" Set 'background' back to the default. The value can't always be estimated
|
|
||||||
" and is then guessed.
|
|
||||||
hi clear Normal
|
|
||||||
set bg&
|
|
||||||
|
|
||||||
" Remove all existing highlighting and set the defaults.
|
|
||||||
hi clear
|
|
||||||
|
|
||||||
" Load the syntax highlighting defaults, if it's enabled.
|
|
||||||
if exists("syntax_on")
|
|
||||||
syntax reset
|
|
||||||
endif
|
|
||||||
|
|
||||||
let colors_name = "default"
|
|
||||||
|
|
||||||
" vim: sw=2
|
|
||||||
@@ -1,57 +0,0 @@
|
|||||||
" Vim color file
|
|
||||||
" Maintainer: David Schweikert <[email protected]>
|
|
||||||
" Last Change: 2004 May 16
|
|
||||||
|
|
||||||
" First remove all existing highlighting.
|
|
||||||
hi clear
|
|
||||||
|
|
||||||
let colors_name = "delek"
|
|
||||||
|
|
||||||
hi Normal guifg=Black guibg=white
|
|
||||||
|
|
||||||
" Groups used in the 'highlight' and 'guicursor' options default value.
|
|
||||||
hi ErrorMsg term=standout ctermbg=DarkRed ctermfg=White guibg=Red guifg=White
|
|
||||||
hi IncSearch term=reverse cterm=reverse gui=reverse
|
|
||||||
hi ModeMsg term=bold cterm=bold gui=bold
|
|
||||||
hi VertSplit term=reverse cterm=reverse gui=reverse
|
|
||||||
hi Visual term=reverse cterm=reverse gui=reverse guifg=Grey guibg=fg
|
|
||||||
hi VisualNOS term=underline,bold cterm=underline,bold gui=underline,bold
|
|
||||||
hi DiffText term=reverse cterm=bold ctermbg=Red gui=bold guibg=Red
|
|
||||||
hi Cursor guibg=Green guifg=NONE
|
|
||||||
hi lCursor guibg=Cyan guifg=NONE
|
|
||||||
hi Directory term=bold ctermfg=DarkBlue guifg=Blue
|
|
||||||
hi LineNr term=underline ctermfg=Brown guifg=Brown
|
|
||||||
hi MoreMsg term=bold ctermfg=DarkGreen gui=bold guifg=SeaGreen
|
|
||||||
hi Question term=standout ctermfg=DarkGreen gui=bold guifg=SeaGreen
|
|
||||||
hi Search term=reverse ctermbg=Yellow ctermfg=NONE guibg=Yellow guifg=NONE
|
|
||||||
hi SpecialKey term=bold ctermfg=DarkBlue guifg=Blue
|
|
||||||
hi Title term=bold ctermfg=DarkMagenta gui=bold guifg=Magenta
|
|
||||||
hi WarningMsg term=standout ctermfg=DarkRed guifg=Red
|
|
||||||
hi WildMenu term=standout ctermbg=Yellow ctermfg=Black guibg=Yellow guifg=Black
|
|
||||||
hi Folded term=standout ctermbg=Grey ctermfg=DarkBlue guibg=LightGrey guifg=DarkBlue
|
|
||||||
hi FoldColumn term=standout ctermbg=Grey ctermfg=DarkBlue guibg=Grey guifg=DarkBlue
|
|
||||||
hi DiffAdd term=bold ctermbg=LightBlue guibg=LightBlue
|
|
||||||
hi DiffChange term=bold ctermbg=LightMagenta guibg=LightMagenta
|
|
||||||
hi DiffDelete term=bold ctermfg=Blue ctermbg=LightCyan gui=bold guifg=Blue guibg=LightCyan
|
|
||||||
|
|
||||||
hi StatusLine cterm=bold ctermbg=blue ctermfg=yellow guibg=gold guifg=blue
|
|
||||||
hi StatusLineNC cterm=bold ctermbg=blue ctermfg=black guibg=gold guifg=blue
|
|
||||||
hi NonText term=bold ctermfg=Blue gui=bold guifg=gray guibg=white
|
|
||||||
hi Cursor guibg=fg guifg=bg
|
|
||||||
|
|
||||||
" syntax highlighting
|
|
||||||
hi PreProc term=underline cterm=NONE ctermfg=darkmagenta gui=NONE guifg=magenta3
|
|
||||||
hi Identifier term=underline cterm=NONE ctermfg=darkcyan gui=NONE guifg=cyan4
|
|
||||||
hi Comment term=NONE cterm=NONE ctermfg=darkred gui=NONE guifg=red2
|
|
||||||
hi Constant term=underline cterm=NONE ctermfg=darkgreen gui=NONE guifg=green3
|
|
||||||
hi Special term=bold cterm=NONE ctermfg=lightred gui=NONE guifg=deeppink
|
|
||||||
hi Statement term=bold cterm=bold ctermfg=blue gui=bold guifg=blue
|
|
||||||
hi Type term=underline cterm=NONE ctermfg=blue gui=bold guifg=blue
|
|
||||||
|
|
||||||
if exists("syntax_on")
|
|
||||||
let syntax_cmd = "enable"
|
|
||||||
runtime syntax/syncolor.vim
|
|
||||||
unlet syntax_cmd
|
|
||||||
endif
|
|
||||||
|
|
||||||
" vim: sw=2
|
|
||||||
@@ -1,108 +0,0 @@
|
|||||||
" Vim color file
|
|
||||||
" Maintainer: Hans Fugal <[email protected]>
|
|
||||||
" Last Change: $Date: 2004-07-14 01:28:30 +0200 (Mi, 14. Jul 2004) $
|
|
||||||
" Last Change: $Date: 2004-07-14 01:28:30 +0200 (Mi, 14. Jul 2004) $
|
|
||||||
" URL: http://hans.fugal.net/vim/colors/desert.vim
|
|
||||||
" Version: $Id: desert.vim 8393 2004-07-13 23:28:30Z korli $
|
|
||||||
|
|
||||||
" cool help screens
|
|
||||||
" :he group-name
|
|
||||||
" :he highlight-groups
|
|
||||||
" :he cterm-colors
|
|
||||||
|
|
||||||
set background=dark
|
|
||||||
if version > 580
|
|
||||||
" no guarantees for version 5.8 and below, but this makes it stop
|
|
||||||
" complaining
|
|
||||||
hi clear
|
|
||||||
if exists("syntax_on")
|
|
||||||
syntax reset
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
let g:colors_name="desert"
|
|
||||||
|
|
||||||
hi Normal guifg=White guibg=grey20
|
|
||||||
|
|
||||||
" highlight groups
|
|
||||||
hi Cursor guibg=khaki guifg=slategrey
|
|
||||||
"hi CursorIM
|
|
||||||
"hi Directory
|
|
||||||
"hi DiffAdd
|
|
||||||
"hi DiffChange
|
|
||||||
"hi DiffDelete
|
|
||||||
"hi DiffText
|
|
||||||
"hi ErrorMsg
|
|
||||||
hi VertSplit guibg=#c2bfa5 guifg=grey50 gui=none
|
|
||||||
hi Folded guibg=grey30 guifg=gold
|
|
||||||
hi FoldColumn guibg=grey30 guifg=tan
|
|
||||||
hi IncSearch guifg=slategrey guibg=khaki
|
|
||||||
"hi LineNr
|
|
||||||
hi ModeMsg guifg=goldenrod
|
|
||||||
hi MoreMsg guifg=SeaGreen
|
|
||||||
hi NonText guifg=LightBlue guibg=grey30
|
|
||||||
hi Question guifg=springgreen
|
|
||||||
hi Search guibg=peru guifg=wheat
|
|
||||||
hi SpecialKey guifg=yellowgreen
|
|
||||||
hi StatusLine guibg=#c2bfa5 guifg=black gui=none
|
|
||||||
hi StatusLineNC guibg=#c2bfa5 guifg=grey50 gui=none
|
|
||||||
hi Title guifg=indianred
|
|
||||||
hi Visual gui=none guifg=khaki guibg=olivedrab
|
|
||||||
"hi VisualNOS
|
|
||||||
hi WarningMsg guifg=salmon
|
|
||||||
"hi WildMenu
|
|
||||||
"hi Menu
|
|
||||||
"hi Scrollbar
|
|
||||||
"hi Tooltip
|
|
||||||
|
|
||||||
" syntax highlighting groups
|
|
||||||
hi Comment guifg=SkyBlue
|
|
||||||
hi Constant guifg=#ffa0a0
|
|
||||||
hi Identifier guifg=palegreen
|
|
||||||
hi Statement guifg=khaki
|
|
||||||
hi PreProc guifg=indianred
|
|
||||||
hi Type guifg=darkkhaki
|
|
||||||
hi Special guifg=navajowhite
|
|
||||||
"hi Underlined
|
|
||||||
hi Ignore guifg=grey40
|
|
||||||
"hi Error
|
|
||||||
hi Todo guifg=orangered guibg=yellow2
|
|
||||||
|
|
||||||
" color terminal definitions
|
|
||||||
hi SpecialKey ctermfg=darkgreen
|
|
||||||
hi NonText cterm=bold ctermfg=darkblue
|
|
||||||
hi Directory ctermfg=darkcyan
|
|
||||||
hi ErrorMsg cterm=bold ctermfg=7 ctermbg=1
|
|
||||||
hi IncSearch cterm=NONE ctermfg=yellow ctermbg=green
|
|
||||||
hi Search cterm=NONE ctermfg=grey ctermbg=blue
|
|
||||||
hi MoreMsg ctermfg=darkgreen
|
|
||||||
hi ModeMsg cterm=NONE ctermfg=brown
|
|
||||||
hi LineNr ctermfg=3
|
|
||||||
hi Question ctermfg=green
|
|
||||||
hi StatusLine cterm=bold,reverse
|
|
||||||
hi StatusLineNC cterm=reverse
|
|
||||||
hi VertSplit cterm=reverse
|
|
||||||
hi Title ctermfg=5
|
|
||||||
hi Visual cterm=reverse
|
|
||||||
hi VisualNOS cterm=bold,underline
|
|
||||||
hi WarningMsg ctermfg=1
|
|
||||||
hi WildMenu ctermfg=0 ctermbg=3
|
|
||||||
hi Folded ctermfg=darkgrey ctermbg=NONE
|
|
||||||
hi FoldColumn ctermfg=darkgrey ctermbg=NONE
|
|
||||||
hi DiffAdd ctermbg=4
|
|
||||||
hi DiffChange ctermbg=5
|
|
||||||
hi DiffDelete cterm=bold ctermfg=4 ctermbg=6
|
|
||||||
hi DiffText cterm=bold ctermbg=1
|
|
||||||
hi Comment ctermfg=darkcyan
|
|
||||||
hi Constant ctermfg=brown
|
|
||||||
hi Special ctermfg=5
|
|
||||||
hi Identifier ctermfg=6
|
|
||||||
hi Statement ctermfg=3
|
|
||||||
hi PreProc ctermfg=5
|
|
||||||
hi Type ctermfg=2
|
|
||||||
hi Underlined cterm=underline ctermfg=5
|
|
||||||
hi Ignore cterm=bold ctermfg=7
|
|
||||||
hi Ignore ctermfg=darkgrey
|
|
||||||
hi Error cterm=bold ctermfg=7 ctermbg=1
|
|
||||||
|
|
||||||
|
|
||||||
"vim: sw=4
|
|
||||||
@@ -1,50 +0,0 @@
|
|||||||
" local syntax file - set colors on a per-machine basis:
|
|
||||||
" vim: tw=0 ts=4 sw=4
|
|
||||||
" Vim color file
|
|
||||||
" Maintainer: Ron Aaron <[email protected]>
|
|
||||||
" Last Change: 2003 May 02
|
|
||||||
|
|
||||||
set background=dark
|
|
||||||
hi clear
|
|
||||||
if exists("syntax_on")
|
|
||||||
syntax reset
|
|
||||||
endif
|
|
||||||
let g:colors_name = "elflord"
|
|
||||||
hi Normal guifg=cyan guibg=black
|
|
||||||
hi Comment term=bold ctermfg=DarkCyan guifg=#80a0ff
|
|
||||||
hi Constant term=underline ctermfg=Magenta guifg=Magenta
|
|
||||||
hi Special term=bold ctermfg=DarkMagenta guifg=Red
|
|
||||||
hi Identifier term=underline cterm=bold ctermfg=Cyan guifg=#40ffff
|
|
||||||
hi Statement term=bold ctermfg=Yellow gui=bold guifg=#aa4444
|
|
||||||
hi PreProc term=underline ctermfg=LightBlue guifg=#ff80ff
|
|
||||||
hi Type term=underline ctermfg=LightGreen guifg=#60ff60 gui=bold
|
|
||||||
hi Function term=bold ctermfg=White guifg=White
|
|
||||||
hi Repeat term=underline ctermfg=White guifg=white
|
|
||||||
hi Operator ctermfg=Red guifg=Red
|
|
||||||
hi Ignore ctermfg=black guifg=bg
|
|
||||||
hi Error term=reverse ctermbg=Red ctermfg=White guibg=Red guifg=White
|
|
||||||
hi Todo term=standout ctermbg=Yellow ctermfg=Black guifg=Blue guibg=Yellow
|
|
||||||
|
|
||||||
" Common groups that link to default highlighting.
|
|
||||||
" You can specify other highlighting easily.
|
|
||||||
hi link String Constant
|
|
||||||
hi link Character Constant
|
|
||||||
hi link Number Constant
|
|
||||||
hi link Boolean Constant
|
|
||||||
hi link Float Number
|
|
||||||
hi link Conditional Repeat
|
|
||||||
hi link Label Statement
|
|
||||||
hi link Keyword Statement
|
|
||||||
hi link Exception Statement
|
|
||||||
hi link Include PreProc
|
|
||||||
hi link Define PreProc
|
|
||||||
hi link Macro PreProc
|
|
||||||
hi link PreCondit PreProc
|
|
||||||
hi link StorageClass Type
|
|
||||||
hi link Structure Type
|
|
||||||
hi link Typedef Type
|
|
||||||
hi link Tag Special
|
|
||||||
hi link SpecialChar Special
|
|
||||||
hi link Delimiter Special
|
|
||||||
hi link SpecialComment Special
|
|
||||||
hi link Debug Special
|
|
||||||
@@ -1,54 +0,0 @@
|
|||||||
" Vim color file
|
|
||||||
" Maintainer: Bram Moolenaar <[email protected]>
|
|
||||||
" Last Change: 2001 May 21
|
|
||||||
|
|
||||||
" This color scheme uses a dark grey background.
|
|
||||||
|
|
||||||
" First remove all existing highlighting.
|
|
||||||
set background=dark
|
|
||||||
hi clear
|
|
||||||
if exists("syntax_on")
|
|
||||||
syntax reset
|
|
||||||
endif
|
|
||||||
|
|
||||||
let colors_name = "evening"
|
|
||||||
|
|
||||||
hi Normal ctermbg=DarkGrey ctermfg=White guifg=White guibg=grey20
|
|
||||||
|
|
||||||
" Groups used in the 'highlight' and 'guicursor' options default value.
|
|
||||||
hi ErrorMsg term=standout ctermbg=DarkRed ctermfg=White guibg=Red guifg=White
|
|
||||||
hi IncSearch term=reverse cterm=reverse gui=reverse
|
|
||||||
hi ModeMsg term=bold cterm=bold gui=bold
|
|
||||||
hi StatusLine term=reverse,bold cterm=reverse,bold gui=reverse,bold
|
|
||||||
hi StatusLineNC term=reverse cterm=reverse gui=reverse
|
|
||||||
hi VertSplit term=reverse cterm=reverse gui=reverse
|
|
||||||
hi Visual term=reverse cterm=reverse gui=reverse guifg=Grey guibg=fg
|
|
||||||
hi VisualNOS term=underline,bold cterm=underline,bold gui=underline,bold
|
|
||||||
hi DiffText term=reverse cterm=bold ctermbg=Red gui=bold guibg=Red
|
|
||||||
hi Cursor guibg=Green guifg=Black
|
|
||||||
hi lCursor guibg=Cyan guifg=Black
|
|
||||||
hi Directory term=bold ctermfg=LightCyan guifg=Cyan
|
|
||||||
hi LineNr term=underline ctermfg=Yellow guifg=Yellow
|
|
||||||
hi MoreMsg term=bold ctermfg=LightGreen gui=bold guifg=SeaGreen
|
|
||||||
hi NonText term=bold ctermfg=LightBlue gui=bold guifg=LightBlue guibg=grey30
|
|
||||||
hi Question term=standout ctermfg=LightGreen gui=bold guifg=Green
|
|
||||||
hi Search term=reverse ctermbg=Yellow ctermfg=Black guibg=Yellow guifg=Black
|
|
||||||
hi SpecialKey term=bold ctermfg=LightBlue guifg=Cyan
|
|
||||||
hi Title term=bold ctermfg=LightMagenta gui=bold guifg=Magenta
|
|
||||||
hi WarningMsg term=standout ctermfg=LightRed guifg=Red
|
|
||||||
hi WildMenu term=standout ctermbg=Yellow ctermfg=Black guibg=Yellow guifg=Black
|
|
||||||
hi Folded term=standout ctermbg=LightGrey ctermfg=DarkBlue guibg=LightGrey guifg=DarkBlue
|
|
||||||
hi FoldColumn term=standout ctermbg=LightGrey ctermfg=DarkBlue guibg=Grey guifg=DarkBlue
|
|
||||||
hi DiffAdd term=bold ctermbg=DarkBlue guibg=DarkBlue
|
|
||||||
hi DiffChange term=bold ctermbg=DarkMagenta guibg=DarkMagenta
|
|
||||||
hi DiffDelete term=bold ctermfg=Blue ctermbg=DarkCyan gui=bold guifg=Blue guibg=DarkCyan
|
|
||||||
|
|
||||||
" Groups for syntax highlighting
|
|
||||||
hi Constant term=underline ctermfg=Magenta guifg=#ffa0a0 guibg=grey5
|
|
||||||
hi Special term=bold ctermfg=LightRed guifg=Orange guibg=grey5
|
|
||||||
if &t_Co > 8
|
|
||||||
hi Statement term=bold cterm=bold ctermfg=Yellow guifg=#ffff60 gui=bold
|
|
||||||
endif
|
|
||||||
hi Ignore ctermfg=DarkGrey guifg=grey20
|
|
||||||
|
|
||||||
" vim: sw=2
|
|
||||||
@@ -1,64 +0,0 @@
|
|||||||
" local syntax file - set colors on a per-machine basis:
|
|
||||||
" vim: tw=0 ts=4 sw=4
|
|
||||||
" Vim color file
|
|
||||||
" Maintainer: Ron Aaron <[email protected]>
|
|
||||||
" Last Change: 2003 May 02
|
|
||||||
|
|
||||||
hi clear
|
|
||||||
set background=dark
|
|
||||||
if exists("syntax_on")
|
|
||||||
syntax reset
|
|
||||||
endif
|
|
||||||
let g:colors_name = "koehler"
|
|
||||||
hi Normal guifg=white guibg=black
|
|
||||||
hi Scrollbar guifg=darkcyan guibg=cyan
|
|
||||||
hi Menu guifg=black guibg=cyan
|
|
||||||
hi SpecialKey term=bold cterm=bold ctermfg=darkred guifg=Blue
|
|
||||||
hi NonText term=bold cterm=bold ctermfg=darkred gui=bold guifg=Blue
|
|
||||||
hi Directory term=bold cterm=bold ctermfg=brown guifg=Blue
|
|
||||||
hi ErrorMsg term=standout cterm=bold ctermfg=grey ctermbg=blue guifg=White guibg=Red
|
|
||||||
hi Search term=reverse ctermfg=white ctermbg=red guifg=white guibg=Red
|
|
||||||
hi MoreMsg term=bold cterm=bold ctermfg=darkgreen gui=bold guifg=SeaGreen
|
|
||||||
hi ModeMsg term=bold cterm=bold gui=bold guifg=White guibg=Blue
|
|
||||||
hi LineNr term=underline cterm=bold ctermfg=darkcyan guifg=Yellow
|
|
||||||
hi Question term=standout cterm=bold ctermfg=darkgreen gui=bold guifg=Green
|
|
||||||
hi StatusLine term=bold,reverse cterm=bold ctermfg=lightblue ctermbg=white gui=bold guifg=blue guibg=white
|
|
||||||
hi StatusLineNC term=reverse ctermfg=white ctermbg=lightblue guifg=white guibg=blue
|
|
||||||
hi Title term=bold cterm=bold ctermfg=darkmagenta gui=bold guifg=Magenta
|
|
||||||
hi Visual term=reverse cterm=reverse gui=reverse
|
|
||||||
hi WarningMsg term=standout cterm=bold ctermfg=darkblue guifg=Red
|
|
||||||
hi Cursor guifg=bg guibg=Green
|
|
||||||
hi Comment term=bold cterm=bold ctermfg=cyan guifg=#80a0ff
|
|
||||||
hi Constant term=underline cterm=bold ctermfg=magenta guifg=#ffa0a0
|
|
||||||
hi Special term=bold cterm=bold ctermfg=red guifg=Orange
|
|
||||||
hi Identifier term=underline ctermfg=brown guifg=#40ffff
|
|
||||||
hi Statement term=bold cterm=bold ctermfg=yellow gui=bold guifg=#ffff60
|
|
||||||
hi PreProc term=underline ctermfg=darkblue guifg=#ff80ff
|
|
||||||
hi Type term=underline cterm=bold ctermfg=lightgreen gui=bold guifg=#60ff60
|
|
||||||
hi Error term=reverse ctermfg=darkcyan ctermbg=black guifg=Red guibg=Black
|
|
||||||
hi Todo term=standout ctermfg=black ctermbg=darkcyan guifg=Blue guibg=Yellow
|
|
||||||
hi link IncSearch Visual
|
|
||||||
hi link String Constant
|
|
||||||
hi link Character Constant
|
|
||||||
hi link Number Constant
|
|
||||||
hi link Boolean Constant
|
|
||||||
hi link Float Number
|
|
||||||
hi link Function Identifier
|
|
||||||
hi link Conditional Statement
|
|
||||||
hi link Repeat Statement
|
|
||||||
hi link Label Statement
|
|
||||||
hi link Operator Statement
|
|
||||||
hi link Keyword Statement
|
|
||||||
hi link Exception Statement
|
|
||||||
hi link Include PreProc
|
|
||||||
hi link Define PreProc
|
|
||||||
hi link Macro PreProc
|
|
||||||
hi link PreCondit PreProc
|
|
||||||
hi link StorageClass Type
|
|
||||||
hi link Structure Type
|
|
||||||
hi link Typedef Type
|
|
||||||
hi link Tag Special
|
|
||||||
hi link SpecialChar Special
|
|
||||||
hi link Delimiter Special
|
|
||||||
hi link SpecialComment Special
|
|
||||||
hi link Debug Special
|
|
||||||
@@ -1,54 +0,0 @@
|
|||||||
" Vim color file
|
|
||||||
" Maintainer: Bram Moolenaar <[email protected]>
|
|
||||||
" Last Change: 2001 May 21
|
|
||||||
|
|
||||||
" This color scheme uses a light grey background.
|
|
||||||
|
|
||||||
" First remove all existing highlighting.
|
|
||||||
set background=light
|
|
||||||
hi clear
|
|
||||||
if exists("syntax_on")
|
|
||||||
syntax reset
|
|
||||||
endif
|
|
||||||
|
|
||||||
let colors_name = "morning"
|
|
||||||
|
|
||||||
hi Normal ctermfg=Black ctermbg=LightGrey guifg=Black guibg=grey90
|
|
||||||
|
|
||||||
" Groups used in the 'highlight' and 'guicursor' options default value.
|
|
||||||
hi ErrorMsg term=standout ctermbg=DarkRed ctermfg=White guibg=Red guifg=White
|
|
||||||
hi IncSearch term=reverse cterm=reverse gui=reverse
|
|
||||||
hi ModeMsg term=bold cterm=bold gui=bold
|
|
||||||
hi StatusLine term=reverse,bold cterm=reverse,bold gui=reverse,bold
|
|
||||||
hi StatusLineNC term=reverse cterm=reverse gui=reverse
|
|
||||||
hi VertSplit term=reverse cterm=reverse gui=reverse
|
|
||||||
hi Visual term=reverse cterm=reverse gui=reverse guifg=Grey guibg=fg
|
|
||||||
hi VisualNOS term=underline,bold cterm=underline,bold gui=underline,bold
|
|
||||||
hi DiffText term=reverse cterm=bold ctermbg=Red gui=bold guibg=Red
|
|
||||||
hi Cursor guibg=Green guifg=NONE
|
|
||||||
hi lCursor guibg=Cyan guifg=NONE
|
|
||||||
hi Directory term=bold ctermfg=DarkBlue guifg=Blue
|
|
||||||
hi LineNr term=underline ctermfg=Brown guifg=Brown
|
|
||||||
hi MoreMsg term=bold ctermfg=DarkGreen gui=bold guifg=SeaGreen
|
|
||||||
hi NonText term=bold ctermfg=Blue gui=bold guifg=Blue guibg=grey80
|
|
||||||
hi Question term=standout ctermfg=DarkGreen gui=bold guifg=SeaGreen
|
|
||||||
hi Search term=reverse ctermbg=Yellow ctermfg=NONE guibg=Yellow guifg=NONE
|
|
||||||
hi SpecialKey term=bold ctermfg=DarkBlue guifg=Blue
|
|
||||||
hi Title term=bold ctermfg=DarkMagenta gui=bold guifg=Magenta
|
|
||||||
hi WarningMsg term=standout ctermfg=DarkRed guifg=Red
|
|
||||||
hi WildMenu term=standout ctermbg=Yellow ctermfg=Black guibg=Yellow guifg=Black
|
|
||||||
hi Folded term=standout ctermbg=Grey ctermfg=DarkBlue guibg=LightGrey guifg=DarkBlue
|
|
||||||
hi FoldColumn term=standout ctermbg=Grey ctermfg=DarkBlue guibg=Grey guifg=DarkBlue
|
|
||||||
hi DiffAdd term=bold ctermbg=LightBlue guibg=LightBlue
|
|
||||||
hi DiffChange term=bold ctermbg=LightMagenta guibg=LightMagenta
|
|
||||||
hi DiffDelete term=bold ctermfg=Blue ctermbg=LightCyan gui=bold guifg=Blue guibg=LightCyan
|
|
||||||
|
|
||||||
" Colors for syntax highlighting
|
|
||||||
hi Constant term=underline ctermfg=DarkRed guifg=Magenta guibg=grey95
|
|
||||||
hi Special term=bold ctermfg=DarkMagenta guifg=SlateBlue guibg=grey95
|
|
||||||
if &t_Co > 8
|
|
||||||
hi Statement term=bold cterm=bold ctermfg=Brown gui=bold guifg=Brown
|
|
||||||
endif
|
|
||||||
hi Ignore ctermfg=LightGrey guifg=grey90
|
|
||||||
|
|
||||||
" vim: sw=2
|
|
||||||
@@ -1,41 +0,0 @@
|
|||||||
" local syntax file - set colors on a per-machine basis:
|
|
||||||
" vim: tw=0 ts=4 sw=4
|
|
||||||
" Vim color file
|
|
||||||
" Maintainer: Ron Aaron <[email protected]>
|
|
||||||
" Last Change: 2003 May 02
|
|
||||||
|
|
||||||
hi clear
|
|
||||||
set background=dark
|
|
||||||
if exists("syntax_on")
|
|
||||||
syntax reset
|
|
||||||
endif
|
|
||||||
let g:colors_name = "murphy"
|
|
||||||
|
|
||||||
hi Normal ctermbg=Black ctermfg=lightgreen guibg=Black guifg=lightgreen
|
|
||||||
hi Comment term=bold ctermfg=LightRed guifg=Orange
|
|
||||||
hi Constant term=underline ctermfg=LightGreen guifg=White gui=NONE
|
|
||||||
hi Identifier term=underline ctermfg=LightCyan guifg=#00ffff
|
|
||||||
hi Ignore ctermfg=black guifg=bg
|
|
||||||
hi PreProc term=underline ctermfg=LightBlue guifg=Wheat
|
|
||||||
hi Search term=reverse guifg=white guibg=Blue
|
|
||||||
hi Special term=bold ctermfg=LightRed guifg=magenta
|
|
||||||
hi Statement term=bold ctermfg=Yellow guifg=#ffff00 gui=NONE
|
|
||||||
hi Type ctermfg=LightGreen guifg=grey gui=none
|
|
||||||
hi Error term=reverse ctermbg=Red ctermfg=White guibg=Red guifg=White
|
|
||||||
hi Todo term=standout ctermbg=Yellow ctermfg=Black guifg=Blue guibg=Yellow
|
|
||||||
" From the source:
|
|
||||||
hi Cursor guifg=Orchid guibg=fg
|
|
||||||
hi Directory term=bold ctermfg=LightCyan guifg=Cyan
|
|
||||||
hi ErrorMsg term=standout ctermbg=DarkRed ctermfg=White guibg=Red guifg=White
|
|
||||||
hi IncSearch term=reverse cterm=reverse gui=reverse
|
|
||||||
hi LineNr term=underline ctermfg=Yellow guifg=Yellow
|
|
||||||
hi ModeMsg term=bold cterm=bold gui=bold
|
|
||||||
hi MoreMsg term=bold ctermfg=LightGreen gui=bold guifg=SeaGreen
|
|
||||||
hi NonText term=bold ctermfg=Blue gui=bold guifg=Blue
|
|
||||||
hi Question term=standout ctermfg=LightGreen gui=bold guifg=Cyan
|
|
||||||
hi SpecialKey term=bold ctermfg=LightBlue guifg=Cyan
|
|
||||||
hi StatusLine term=reverse,bold cterm=reverse gui=NONE guifg=White guibg=darkblue
|
|
||||||
hi StatusLineNC term=reverse cterm=reverse gui=NONE guifg=white guibg=#333333
|
|
||||||
hi Title term=bold ctermfg=LightMagenta gui=bold guifg=Pink
|
|
||||||
hi WarningMsg term=standout ctermfg=LightRed guifg=Red
|
|
||||||
hi Visual term=reverse cterm=reverse gui=NONE guifg=white guibg=darkgreen
|
|
||||||
@@ -1,26 +0,0 @@
|
|||||||
" local syntax file - set colors on a per-machine basis:
|
|
||||||
" vim: tw=0 ts=4 sw=4
|
|
||||||
" Vim color file
|
|
||||||
" Maintainer: Ron Aaron <[email protected]>
|
|
||||||
" Last Change: 2003 May 02
|
|
||||||
|
|
||||||
hi clear
|
|
||||||
set background=dark
|
|
||||||
if exists("syntax_on")
|
|
||||||
syntax reset
|
|
||||||
endif
|
|
||||||
let g:colors_name = "pablo"
|
|
||||||
|
|
||||||
highlight Comment ctermfg=8 guifg=#808080
|
|
||||||
highlight Constant ctermfg=14 cterm=none guifg=#00ffff gui=none
|
|
||||||
highlight Identifier ctermfg=6 guifg=#00c0c0
|
|
||||||
highlight Statement ctermfg=3 cterm=bold guifg=#c0c000 gui=bold
|
|
||||||
highlight PreProc ctermfg=10 guifg=#00ff00
|
|
||||||
highlight Type ctermfg=2 guifg=#00c000
|
|
||||||
highlight Special ctermfg=12 guifg=#0000ff
|
|
||||||
highlight Error ctermbg=9 guibg=#ff0000
|
|
||||||
highlight Todo ctermfg=4 ctermbg=3 guifg=#000080 guibg=#c0c000
|
|
||||||
highlight Directory ctermfg=2 guifg=#00c000
|
|
||||||
highlight StatusLine ctermfg=11 ctermbg=12 cterm=none guifg=#ffff00 guibg=#0000ff gui=none
|
|
||||||
highlight Normal guifg=#ffffff guibg=#000000
|
|
||||||
highlight Search ctermbg=3 guibg=#c0c000
|
|
||||||
@@ -1,60 +0,0 @@
|
|||||||
" Vim color file
|
|
||||||
" Maintainer: David Ne\v{c}as (Yeti) <[email protected]>
|
|
||||||
" Last Change: 2003-04-23
|
|
||||||
" URL: http://trific.ath.cx/Ftp/vim/colors/peachpuff.vim
|
|
||||||
|
|
||||||
" This color scheme uses a peachpuff background (what you've expected when it's
|
|
||||||
" called peachpuff?).
|
|
||||||
"
|
|
||||||
" Note: Only GUI colors differ from default, on terminal it's just `light'.
|
|
||||||
|
|
||||||
" First remove all existing highlighting.
|
|
||||||
set background=light
|
|
||||||
hi clear
|
|
||||||
if exists("syntax_on")
|
|
||||||
syntax reset
|
|
||||||
endif
|
|
||||||
|
|
||||||
let colors_name = "peachpuff"
|
|
||||||
|
|
||||||
hi Normal guibg=PeachPuff guifg=Black
|
|
||||||
|
|
||||||
hi SpecialKey term=bold ctermfg=4 guifg=Blue
|
|
||||||
hi NonText term=bold cterm=bold ctermfg=4 gui=bold guifg=Blue
|
|
||||||
hi Directory term=bold ctermfg=4 guifg=Blue
|
|
||||||
hi ErrorMsg term=standout cterm=bold ctermfg=7 ctermbg=1 gui=bold guifg=White guibg=Red
|
|
||||||
hi IncSearch term=reverse cterm=reverse gui=reverse
|
|
||||||
hi Search term=reverse ctermbg=3 guibg=Gold2
|
|
||||||
hi MoreMsg term=bold ctermfg=2 gui=bold guifg=SeaGreen
|
|
||||||
hi ModeMsg term=bold cterm=bold gui=bold
|
|
||||||
hi LineNr term=underline ctermfg=3 guifg=Red3
|
|
||||||
hi Question term=standout ctermfg=2 gui=bold guifg=SeaGreen
|
|
||||||
hi StatusLine term=bold,reverse cterm=bold,reverse gui=bold guifg=White guibg=Black
|
|
||||||
hi StatusLineNC term=reverse cterm=reverse gui=bold guifg=PeachPuff guibg=Gray45
|
|
||||||
hi VertSplit term=reverse cterm=reverse gui=bold guifg=White guibg=Gray45
|
|
||||||
hi Title term=bold ctermfg=5 gui=bold guifg=DeepPink3
|
|
||||||
hi Visual term=reverse cterm=reverse gui=reverse guifg=Grey80 guibg=fg
|
|
||||||
hi VisualNOS term=bold,underline cterm=bold,underline gui=bold,underline
|
|
||||||
hi WarningMsg term=standout ctermfg=1 gui=bold guifg=Red
|
|
||||||
hi WildMenu term=standout ctermfg=0 ctermbg=3 guifg=Black guibg=Yellow
|
|
||||||
hi Folded term=standout ctermfg=4 ctermbg=7 guifg=Black guibg=#e3c1a5
|
|
||||||
hi FoldColumn term=standout ctermfg=4 ctermbg=7 guifg=DarkBlue guibg=Gray80
|
|
||||||
hi DiffAdd term=bold ctermbg=4 guibg=White
|
|
||||||
hi DiffChange term=bold ctermbg=5 guibg=#edb5cd
|
|
||||||
hi DiffDelete term=bold cterm=bold ctermfg=4 ctermbg=6 gui=bold guifg=LightBlue guibg=#f6e8d0
|
|
||||||
hi DiffText term=reverse cterm=bold ctermbg=1 gui=bold guibg=#ff8060
|
|
||||||
hi Cursor guifg=bg guibg=fg
|
|
||||||
hi lCursor guifg=bg guibg=fg
|
|
||||||
|
|
||||||
" Colors for syntax highlighting
|
|
||||||
hi Comment term=bold ctermfg=4 guifg=#406090
|
|
||||||
hi Constant term=underline ctermfg=1 guifg=#c00058
|
|
||||||
hi Special term=bold ctermfg=5 guifg=SlateBlue
|
|
||||||
hi Identifier term=underline ctermfg=6 guifg=DarkCyan
|
|
||||||
hi Statement term=bold ctermfg=3 gui=bold guifg=Brown
|
|
||||||
hi PreProc term=underline ctermfg=5 guifg=Magenta3
|
|
||||||
hi Type term=underline ctermfg=2 gui=bold guifg=SeaGreen
|
|
||||||
hi Ignore cterm=bold ctermfg=7 guifg=bg
|
|
||||||
hi Error term=reverse cterm=bold ctermfg=7 ctermbg=1 gui=bold guifg=White guibg=Red
|
|
||||||
hi Todo term=standout ctermfg=0 ctermbg=3 guifg=Blue guibg=Yellow
|
|
||||||
|
|
||||||
@@ -1,43 +0,0 @@
|
|||||||
" local syntax file - set colors on a per-machine basis:
|
|
||||||
" vim: tw=0 ts=4 sw=4
|
|
||||||
" Vim color file
|
|
||||||
" Maintainer: Ron Aaron <[email protected]>
|
|
||||||
" Last Change: 2003 May 02
|
|
||||||
|
|
||||||
set background=dark
|
|
||||||
hi clear
|
|
||||||
if exists("syntax_on")
|
|
||||||
syntax reset
|
|
||||||
endif
|
|
||||||
let g:colors_name = "ron"
|
|
||||||
hi Normal guifg=cyan guibg=black
|
|
||||||
hi NonText guifg=brown
|
|
||||||
hi comment guifg=green
|
|
||||||
hi constant guifg=cyan gui=bold
|
|
||||||
hi identifier guifg=cyan gui=NONE
|
|
||||||
hi statement guifg=lightblue gui=NONE
|
|
||||||
hi preproc guifg=Pink2
|
|
||||||
hi type guifg=seagreen gui=bold
|
|
||||||
hi special guifg=yellow
|
|
||||||
hi ErrorMsg guifg=Black guibg=Red
|
|
||||||
hi WarningMsg guifg=Black guibg=Green
|
|
||||||
hi Error guibg=Red
|
|
||||||
hi Todo guifg=Black guibg=orange
|
|
||||||
hi Cursor guibg=#60a060 guifg=#00ff00
|
|
||||||
hi Search guibg=lightslateblue
|
|
||||||
hi IncSearch gui=NONE guibg=steelblue
|
|
||||||
hi LineNr guifg=darkgrey
|
|
||||||
hi title guifg=darkgrey
|
|
||||||
hi StatusLineNC gui=NONE guifg=lightblue guibg=darkblue
|
|
||||||
hi StatusLine gui=bold guifg=cyan guibg=blue
|
|
||||||
hi label guifg=gold2
|
|
||||||
hi operator guifg=orange
|
|
||||||
hi clear Visual
|
|
||||||
hi Visual term=reverse cterm=reverse gui=reverse
|
|
||||||
hi DiffChange guibg=darkgreen
|
|
||||||
hi DiffText guibg=olivedrab
|
|
||||||
hi DiffAdd guibg=slateblue
|
|
||||||
hi DiffDelete guibg=coral
|
|
||||||
hi Folded guibg=gray30
|
|
||||||
hi FoldColumn guibg=gray30 guifg=white
|
|
||||||
hi cIf0 guifg=gray
|
|
||||||
@@ -1,60 +0,0 @@
|
|||||||
" Vim color file
|
|
||||||
" Maintainer: Yasuhiro Matsumoto <[email protected]>
|
|
||||||
" Last Change: 2001 May 25
|
|
||||||
|
|
||||||
" This look like normal text editor.
|
|
||||||
" This color scheme uses a light background.
|
|
||||||
|
|
||||||
" First remove all existing highlighting.
|
|
||||||
set background=light
|
|
||||||
hi clear
|
|
||||||
if exists("syntax_on")
|
|
||||||
syntax reset
|
|
||||||
endif
|
|
||||||
|
|
||||||
let colors_name = "shine"
|
|
||||||
|
|
||||||
hi Normal ctermbg=White ctermfg=Black guifg=Black guibg=White
|
|
||||||
|
|
||||||
" Groups used in the 'highlight' and 'guicursor' options default value.
|
|
||||||
hi ErrorMsg term=standout ctermbg=DarkRed ctermfg=White guibg=Red guifg=White
|
|
||||||
hi IncSearch term=reverse cterm=reverse gui=reverse
|
|
||||||
hi ModeMsg term=bold cterm=bold gui=bold
|
|
||||||
hi StatusLine term=reverse,bold cterm=reverse,bold gui=reverse,bold
|
|
||||||
hi StatusLineNC term=reverse cterm=reverse gui=reverse
|
|
||||||
hi VertSplit term=reverse cterm=reverse gui=reverse
|
|
||||||
hi Visual term=reverse cterm=reverse gui=reverse guifg=Grey guibg=fg
|
|
||||||
hi VisualNOS term=underline,bold cterm=underline,bold gui=underline,bold
|
|
||||||
hi DiffText term=reverse cterm=bold ctermbg=Red gui=bold guibg=Red
|
|
||||||
hi Cursor ctermbg=Green guibg=Green guifg=Black
|
|
||||||
hi lCursor guibg=Cyan guifg=Black
|
|
||||||
hi Directory term=bold ctermfg=LightRed guifg=Red
|
|
||||||
hi LineNr term=underline ctermfg=Yellow guifg=Yellow
|
|
||||||
hi MoreMsg term=bold ctermfg=LightGreen gui=bold guifg=SeaGreen
|
|
||||||
hi NonText term=bold ctermfg=LightBlue gui=bold guifg=LightBlue guibg=grey90
|
|
||||||
hi Question term=standout ctermfg=LightGreen gui=bold guifg=Green
|
|
||||||
hi Search term=reverse ctermbg=Yellow ctermfg=Black guibg=Yellow guifg=Black
|
|
||||||
hi SpecialKey term=bold ctermfg=LightBlue guifg=Blue
|
|
||||||
hi Title term=bold ctermfg=LightMagenta gui=bold guifg=Magenta
|
|
||||||
hi WarningMsg term=standout ctermfg=LightRed guifg=Red
|
|
||||||
hi WildMenu term=standout ctermbg=Yellow ctermfg=Black guibg=Yellow guifg=Black
|
|
||||||
hi Folded term=standout ctermbg=LightGrey ctermfg=DarkBlue guibg=LightGrey guifg=DarkBlue
|
|
||||||
hi FoldColumn term=standout ctermbg=LightGrey ctermfg=DarkBlue guibg=Grey guifg=DarkBlue
|
|
||||||
hi DiffAdd term=bold ctermbg=DarkBlue guibg=DarkBlue
|
|
||||||
hi DiffChange term=bold ctermbg=DarkMagenta guibg=DarkMagenta
|
|
||||||
hi DiffDelete term=bold ctermfg=Blue ctermbg=DarkCyan gui=bold guifg=Blue guibg=DarkCyan
|
|
||||||
|
|
||||||
hi Comment ctermfg=DarkGrey ctermbg=White guifg=DarkGrey gui=bold
|
|
||||||
hi SpecialChar ctermfg=DarkGrey ctermbg=White guifg=DarkGrey gui=bold
|
|
||||||
hi StorageClass ctermfg=Red ctermbg=White guifg=Red gui=bold
|
|
||||||
hi Number ctermfg=LightRed ctermbg=White guifg=LightRed gui=bold
|
|
||||||
|
|
||||||
" Groups for syntax highlighting
|
|
||||||
hi Constant term=underline ctermfg=Magenta guifg=#a07070 guibg=grey80
|
|
||||||
hi Special term=bold ctermfg=LightRed guifg=DarkOrange guibg=grey80
|
|
||||||
if &t_Co > 8
|
|
||||||
hi Statement term=bold cterm=bold ctermfg=DarkGreen ctermbg=White guifg=#ffff60 gui=bold
|
|
||||||
endif
|
|
||||||
hi Ignore ctermfg=LightGrey guifg=grey90
|
|
||||||
|
|
||||||
" vim: sw=2
|
|
||||||
@@ -1,50 +0,0 @@
|
|||||||
" Vim color file
|
|
||||||
" Maintainer: Thorsten Maerz <[email protected]>
|
|
||||||
" Last Change: 2001 Jul 23
|
|
||||||
" grey on black
|
|
||||||
" optimized for TFT panels
|
|
||||||
|
|
||||||
set background=dark
|
|
||||||
hi clear
|
|
||||||
if exists("syntax_on")
|
|
||||||
syntax reset
|
|
||||||
endif
|
|
||||||
"colorscheme default
|
|
||||||
let g:colors_name = "torte"
|
|
||||||
|
|
||||||
" hardcoded colors :
|
|
||||||
" GUI Comment : #80a0ff = Light blue
|
|
||||||
|
|
||||||
" GUI
|
|
||||||
highlight Normal guifg=Grey80 guibg=Black
|
|
||||||
highlight Search guifg=Black guibg=Red gui=bold
|
|
||||||
highlight Visual guifg=Grey25 gui=bold
|
|
||||||
highlight Cursor guifg=Black guibg=Green gui=bold
|
|
||||||
highlight Special guifg=Orange
|
|
||||||
highlight Comment guifg=#80a0ff
|
|
||||||
highlight StatusLine guifg=blue guibg=white
|
|
||||||
highlight Statement guifg=Yellow gui=NONE
|
|
||||||
highlight Type gui=NONE
|
|
||||||
|
|
||||||
" Console
|
|
||||||
highlight Normal ctermfg=LightGrey ctermbg=Black
|
|
||||||
highlight Search ctermfg=Black ctermbg=Red cterm=NONE
|
|
||||||
highlight Visual cterm=reverse
|
|
||||||
highlight Cursor ctermfg=Black ctermbg=Green cterm=bold
|
|
||||||
highlight Special ctermfg=Brown
|
|
||||||
highlight Comment ctermfg=Blue
|
|
||||||
highlight StatusLine ctermfg=blue ctermbg=white
|
|
||||||
highlight Statement ctermfg=Yellow cterm=NONE
|
|
||||||
highlight Type cterm=NONE
|
|
||||||
|
|
||||||
" only for vim 5
|
|
||||||
if has("unix")
|
|
||||||
if v:version<600
|
|
||||||
highlight Normal ctermfg=Grey ctermbg=Black cterm=NONE guifg=Grey80 guibg=Black gui=NONE
|
|
||||||
highlight Search ctermfg=Black ctermbg=Red cterm=bold guifg=Black guibg=Red gui=bold
|
|
||||||
highlight Visual ctermfg=Black ctermbg=yellow cterm=bold guifg=Grey25 gui=bold
|
|
||||||
highlight Special ctermfg=LightBlue cterm=NONE guifg=LightBlue gui=NONE
|
|
||||||
highlight Comment ctermfg=Cyan cterm=NONE guifg=LightBlue gui=NONE
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
|
|
||||||
@@ -1,54 +0,0 @@
|
|||||||
" local syntax file - set colors on a per-machine basis:
|
|
||||||
" vim: tw=0 ts=4 sw=4
|
|
||||||
" Vim color file
|
|
||||||
" Maintainer: Ron Aaron <[email protected]>
|
|
||||||
" Last Change: 2003 May 02
|
|
||||||
|
|
||||||
set background=light
|
|
||||||
hi clear
|
|
||||||
if exists("syntax_on")
|
|
||||||
syntax reset
|
|
||||||
endif
|
|
||||||
let g:colors_name = "zellner"
|
|
||||||
|
|
||||||
hi Comment term=bold ctermfg=Red guifg=Red
|
|
||||||
hi Normal guifg=black guibg=white
|
|
||||||
hi Constant term=underline ctermfg=Magenta guifg=Magenta
|
|
||||||
hi Special term=bold ctermfg=Magenta guifg=Magenta
|
|
||||||
hi Identifier term=underline ctermfg=Blue guifg=Blue
|
|
||||||
hi Statement term=bold ctermfg=DarkRed gui=NONE guifg=Brown
|
|
||||||
hi PreProc term=underline ctermfg=Magenta guifg=Purple
|
|
||||||
hi Type term=underline ctermfg=Blue gui=NONE guifg=Blue
|
|
||||||
hi Visual term=reverse ctermfg=Yellow ctermbg=Red gui=NONE guifg=Black guibg=Yellow
|
|
||||||
hi Search term=reverse ctermfg=Black ctermbg=Cyan gui=NONE guifg=Black guibg=Cyan
|
|
||||||
hi Tag term=bold ctermfg=DarkGreen guifg=DarkGreen
|
|
||||||
hi Error term=reverse ctermfg=15 ctermbg=9 guibg=Red guifg=White
|
|
||||||
hi Todo term=standout ctermbg=Yellow ctermfg=Black guifg=Blue guibg=Yellow
|
|
||||||
hi StatusLine term=bold,reverse cterm=NONE ctermfg=Yellow ctermbg=DarkGray gui=NONE guifg=Yellow guibg=DarkGray
|
|
||||||
hi! link MoreMsg Comment
|
|
||||||
hi! link ErrorMsg Visual
|
|
||||||
hi! link WarningMsg ErrorMsg
|
|
||||||
hi! link Question Comment
|
|
||||||
hi link String Constant
|
|
||||||
hi link Character Constant
|
|
||||||
hi link Number Constant
|
|
||||||
hi link Boolean Constant
|
|
||||||
hi link Float Number
|
|
||||||
hi link Function Identifier
|
|
||||||
hi link Conditional Statement
|
|
||||||
hi link Repeat Statement
|
|
||||||
hi link Label Statement
|
|
||||||
hi link Operator Statement
|
|
||||||
hi link Keyword Statement
|
|
||||||
hi link Exception Statement
|
|
||||||
hi link Include PreProc
|
|
||||||
hi link Define PreProc
|
|
||||||
hi link Macro PreProc
|
|
||||||
hi link PreCondit PreProc
|
|
||||||
hi link StorageClass Type
|
|
||||||
hi link Structure Type
|
|
||||||
hi link Typedef Type
|
|
||||||
hi link SpecialChar Special
|
|
||||||
hi link Delimiter Special
|
|
||||||
hi link SpecialComment Special
|
|
||||||
hi link Debug Special
|
|
||||||
@@ -1,11 +0,0 @@
|
|||||||
This directory contains Vim scripts to be used with a specific compiler.
|
|
||||||
They are used with the ":compiler" command.
|
|
||||||
|
|
||||||
These scripts usually set options, for example 'errorformat'.
|
|
||||||
See ":help write-compiler-plugin".
|
|
||||||
|
|
||||||
If you want to write your own compiler plugin, have a look at the other files
|
|
||||||
for how to do it, the format is simple.
|
|
||||||
|
|
||||||
If you think a compiler plugin you have written is useful for others, please
|
|
||||||
send it to [email protected].
|
|
||||||
@@ -1,38 +0,0 @@
|
|||||||
" Vim Compiler File
|
|
||||||
" Compiler: ant
|
|
||||||
" Maintainer: Johannes Zellner <[email protected]>
|
|
||||||
" Last Change: Tue, 27 Apr 2004 15:01:45 CEST
|
|
||||||
|
|
||||||
if exists("current_compiler")
|
|
||||||
finish
|
|
||||||
endif
|
|
||||||
let current_compiler = "ant"
|
|
||||||
|
|
||||||
if exists(":CompilerSet") != 2 " older Vim always used :setlocal
|
|
||||||
command -nargs=* CompilerSet setlocal <args>
|
|
||||||
endif
|
|
||||||
|
|
||||||
let s:cpo_save = &cpo
|
|
||||||
set cpo&vim
|
|
||||||
|
|
||||||
CompilerSet makeprg=ant
|
|
||||||
|
|
||||||
" first line:
|
|
||||||
" ant with jikes +E, which assumes the following
|
|
||||||
" two property lines in your 'build.xml':
|
|
||||||
"
|
|
||||||
" <property name = "build.compiler" value = "jikes"/>
|
|
||||||
" <property name = "build.compiler.emacs" value = "true"/>
|
|
||||||
"
|
|
||||||
" second line:
|
|
||||||
" ant with javac
|
|
||||||
"
|
|
||||||
" note that this will work also for tasks like [wtkbuild]
|
|
||||||
"
|
|
||||||
setlocal errorformat=\ %#[%.%#]\ %#%f:%l:%v:%*\\d:%*\\d:\ %t%[%^:]%#:%m,
|
|
||||||
\%A\ %#[%.%#]\ %f:%l:\ %m,%-Z\ %#[%.%#]\ %p^,%C\ %#[%.%#]\ %#%m
|
|
||||||
|
|
||||||
" ,%-C%.%#
|
|
||||||
|
|
||||||
let &cpo = s:cpo_save
|
|
||||||
unlet s:cpo_save
|
|
||||||
@@ -1,19 +0,0 @@
|
|||||||
" Vim compiler file
|
|
||||||
" Compiler: bcc - Borland C
|
|
||||||
" Maintainer: Emile van Raaij ([email protected])
|
|
||||||
" Last Change: 2004 Mar 27
|
|
||||||
|
|
||||||
if exists("current_compiler")
|
|
||||||
finish
|
|
||||||
endif
|
|
||||||
let current_compiler = "bcc"
|
|
||||||
|
|
||||||
if exists(":CompilerSet") != 2 " older Vim always used :setlocal
|
|
||||||
command -nargs=* CompilerSet setlocal <args>
|
|
||||||
endif
|
|
||||||
|
|
||||||
" A workable errorformat for Borland C
|
|
||||||
CompilerSet errorformat=%*[^0-9]%n\ %f\ %l:\ %m
|
|
||||||
|
|
||||||
" default make
|
|
||||||
CompilerSet makeprg=make
|
|
||||||
@@ -1,30 +0,0 @@
|
|||||||
" Vim compiler file
|
|
||||||
" Compiler: BDF to PCF Conversion
|
|
||||||
" Maintainer: Nikolai Weibull <[email protected]>
|
|
||||||
" URL: http://www.pcppopper.org/vim/compiler/pcp/bdf/
|
|
||||||
" Latest Revision: 2004-05-22
|
|
||||||
" arch-tag: 2e2f3a55-199b-468c-aa2e-d6b1a7b87806
|
|
||||||
|
|
||||||
if exists("current_compiler")
|
|
||||||
finish
|
|
||||||
endif
|
|
||||||
let current_compiler = "bdf"
|
|
||||||
|
|
||||||
if exists(":CompilerSet") != 2 " older Vim always used :setlocal
|
|
||||||
command -nargs=* CompilerSet setlocal <args>
|
|
||||||
endif
|
|
||||||
|
|
||||||
let s:cpo_save = &cpo
|
|
||||||
set cpo-=C
|
|
||||||
|
|
||||||
CompilerSet makeprg=bdftopcf\ $*
|
|
||||||
|
|
||||||
CompilerSet errorformat=%ABDF\ %trror\ on\ line\ %l:\ %m,
|
|
||||||
\%-Z%p^,
|
|
||||||
\%Cbdftopcf:\ bdf\ input\\,\ %f\\,\ corrupt,
|
|
||||||
\%-G%.%#
|
|
||||||
|
|
||||||
let &cpo = s:cpo_save
|
|
||||||
unlet s:cpo_save
|
|
||||||
|
|
||||||
" vim: set sts=2 sw=2:
|
|
||||||
@@ -1,20 +0,0 @@
|
|||||||
" Vim compiler file
|
|
||||||
" Compiler: Checkstyle
|
|
||||||
" Maintainer: Doug Kearns <[email protected]>
|
|
||||||
" URL: http://mugca.its.monash.edu.au/~djkea2/vim/compiler/checkstyle.vim
|
|
||||||
" Last Change: 2004 Mar 27
|
|
||||||
|
|
||||||
if exists("current_compiler")
|
|
||||||
finish
|
|
||||||
endif
|
|
||||||
let current_compiler = "checkstyle"
|
|
||||||
|
|
||||||
if exists(":CompilerSet") != 2 " older Vim always used :setlocal
|
|
||||||
command -nargs=* CompilerSet setlocal <args>
|
|
||||||
endif
|
|
||||||
|
|
||||||
CompilerSet makeprg=java\ com.puppycrawl.tools.checkstyle.Main\ -f\ plain
|
|
||||||
|
|
||||||
" sample error: WebTable.java:282: '+=' is not preceeded with whitespace.
|
|
||||||
" WebTable.java:201:1: '{' should be on the previous line.
|
|
||||||
CompilerSet errorformat=%f:%l:\ %m,%f:%l:%v:\ %m,%-G%.%#
|
|
||||||
@@ -1,19 +0,0 @@
|
|||||||
" Vim compiler file
|
|
||||||
" Compiler: ms C#
|
|
||||||
" Maintainer: Joseph H. Yao ([email protected])
|
|
||||||
" Last Change: 2004 Mar 27
|
|
||||||
|
|
||||||
if exists("current_compiler")
|
|
||||||
finish
|
|
||||||
endif
|
|
||||||
let current_compiler = "cs"
|
|
||||||
|
|
||||||
if exists(":CompilerSet") != 2 " older Vim always used :setlocal
|
|
||||||
command -nargs=* CompilerSet setlocal <args>
|
|
||||||
endif
|
|
||||||
|
|
||||||
" default errorformat
|
|
||||||
CompilerSet errorformat&
|
|
||||||
|
|
||||||
" default make
|
|
||||||
CompilerSet makeprg=csc\ %
|
|
||||||
@@ -1,15 +0,0 @@
|
|||||||
" Vim compiler file
|
|
||||||
" Compiler: ATT dot
|
|
||||||
" Maintainer: Marcos Macedo <[email protected]>
|
|
||||||
" Last Change: 2004 May 16
|
|
||||||
|
|
||||||
if exists("current_compiler")
|
|
||||||
finish
|
|
||||||
endif
|
|
||||||
let current_compiler = "dot"
|
|
||||||
|
|
||||||
if exists(":CompilerSet") != 2 " older Vim always used :setlocal
|
|
||||||
command -nargs=* CompilerSet setlocal <args>
|
|
||||||
endif
|
|
||||||
|
|
||||||
CompilerSet makeprg=dot\ -T$*\ \"%:p\"\ -o\ \"%:p:r.$*\"
|
|
||||||
@@ -1,27 +0,0 @@
|
|||||||
" Vim compiler file
|
|
||||||
" Compiler: Fortran Company/NAGWare F compiler
|
|
||||||
" URL: http://www.unb.ca/chem/ajit/compiler/fortran_F.vim
|
|
||||||
" Maintainer: Ajit J. Thakkar (ajit AT unb.ca); <http://www.unb.ca/chem/ajit/>
|
|
||||||
" Version: 0.2
|
|
||||||
" Last Change: 2004 Mar 27
|
|
||||||
|
|
||||||
if exists("current_compiler")
|
|
||||||
finish
|
|
||||||
endif
|
|
||||||
let current_compiler = "fortran_F"
|
|
||||||
|
|
||||||
if exists(":CompilerSet") != 2 " older Vim always used :setlocal
|
|
||||||
command -nargs=* CompilerSet setlocal <args>
|
|
||||||
endif
|
|
||||||
|
|
||||||
let s:cposet=&cpoptions
|
|
||||||
set cpoptions-=C
|
|
||||||
|
|
||||||
CompilerSet errorformat=%trror:\ %f\\,\ line\ %l:%m,
|
|
||||||
\%tarning:\ %f\\,\ line\ %l:%m,
|
|
||||||
\%tatal\ Error:\ %f\\,\ line\ %l:%m,
|
|
||||||
\%-G%.%#
|
|
||||||
CompilerSet makeprg=F
|
|
||||||
|
|
||||||
let &cpoptions=s:cposet
|
|
||||||
unlet s:cposet
|
|
||||||
@@ -1,30 +0,0 @@
|
|||||||
" Vim compiler file
|
|
||||||
" Compiler: Compaq Visual Fortran
|
|
||||||
" Maintainer: Joh.-G. Simon ([email protected])
|
|
||||||
" Last Change: 11/05/2002
|
|
||||||
|
|
||||||
if exists("current_compiler")
|
|
||||||
finish
|
|
||||||
endif
|
|
||||||
let current_compiler = "fortran_cv"
|
|
||||||
|
|
||||||
if exists(":CompilerSet") != 2 " older Vim always used :setlocal
|
|
||||||
command -nargs=* CompilerSet setlocal <args>
|
|
||||||
endif
|
|
||||||
|
|
||||||
let s:cposet = &cpoptions
|
|
||||||
set cpoptions-=C
|
|
||||||
|
|
||||||
" A workable errorformat for Compaq Visual Fortran
|
|
||||||
CompilerSet errorformat=
|
|
||||||
\%E%f(%l)\ :\ Error:%m,
|
|
||||||
\%W%f(%l)\ :\ Warning:%m,
|
|
||||||
\%-Z%p%^%.%#,
|
|
||||||
\%-G%.%#,
|
|
||||||
" Compiler call
|
|
||||||
CompilerSet makeprg=df\ /nologo\ /noobj\ /c\ %
|
|
||||||
" Visual fortran defaults to printing output on stderr
|
|
||||||
" Adjust option shellpipe accordingly
|
|
||||||
|
|
||||||
let &cpoptions = s:cposet
|
|
||||||
unlet s:cposet
|
|
||||||
@@ -1,33 +0,0 @@
|
|||||||
" Vim compiler file
|
|
||||||
" Compiler: Essential Lahey Fortran 90
|
|
||||||
" Probably also works for Lahey Fortran 90
|
|
||||||
" URL: http://www.unb.ca/chem/ajit/compiler/fortran_elf90.vim
|
|
||||||
" Maintainer: Ajit J. Thakkar (ajit AT unb.ca); <http://www.unb.ca/chem/ajit/>
|
|
||||||
" Version: 0.2
|
|
||||||
" Last Change: 2004 Mar 27
|
|
||||||
|
|
||||||
if exists("current_compiler")
|
|
||||||
finish
|
|
||||||
endif
|
|
||||||
let current_compiler = "fortran_elf90"
|
|
||||||
|
|
||||||
if exists(":CompilerSet") != 2 " older Vim always used :setlocal
|
|
||||||
command -nargs=* CompilerSet setlocal <args>
|
|
||||||
endif
|
|
||||||
|
|
||||||
let s:cposet=&cpoptions
|
|
||||||
set cpoptions-=C
|
|
||||||
|
|
||||||
CompilerSet errorformat=\%ALine\ %l\\,\ file\ %f,
|
|
||||||
\%C%tARNING\ --%m,
|
|
||||||
\%C%tATAL\ --%m,
|
|
||||||
\%C%tBORT\ --%m,
|
|
||||||
\%+C%\\l%.%#\.,
|
|
||||||
\%C%p\|,
|
|
||||||
\%C%.%#,
|
|
||||||
\%Z%$,
|
|
||||||
\%-G%.%#
|
|
||||||
CompilerSet makeprg=elf90
|
|
||||||
|
|
||||||
let &cpoptions=s:cposet
|
|
||||||
unlet s:cposet
|
|
||||||
@@ -1,48 +0,0 @@
|
|||||||
" Vim compiler file
|
|
||||||
" Compiler: g77 (GNU Fortran)
|
|
||||||
" Maintainer: Ralf Wildenhues <[email protected]>
|
|
||||||
" Last Change: $Date: 2004-07-14 01:28:30 +0200 (Mi, 14. Jul 2004) $
|
|
||||||
" $Revision: 1.1 $
|
|
||||||
|
|
||||||
if exists("current_compiler")
|
|
||||||
finish
|
|
||||||
endif
|
|
||||||
let current_compiler = "fortran_g77"
|
|
||||||
|
|
||||||
if exists(":CompilerSet") != 2 " older Vim always used :setlocal
|
|
||||||
command -nargs=* CompilerSet setlocal <args>
|
|
||||||
endif
|
|
||||||
|
|
||||||
let s:cpo_save = &cpo
|
|
||||||
set cpo-=C
|
|
||||||
|
|
||||||
" Note: The errorformat assumes GNU make
|
|
||||||
|
|
||||||
" sample multiline errors (besides gcc backend one-liners):
|
|
||||||
" gev.f:14:
|
|
||||||
" parameter UPLO = 'Upper-triangle'
|
|
||||||
" ^
|
|
||||||
" Unsupported VXT statement at (^)
|
|
||||||
" gev.f:6:
|
|
||||||
" integer desca( * ), descb( * )
|
|
||||||
" 1
|
|
||||||
" gev.f:19: (continued):
|
|
||||||
" end subroutine
|
|
||||||
" 2
|
|
||||||
" Invalid declaration of or reference to symbol `desca' at (2) [initially seen at (1)]
|
|
||||||
|
|
||||||
CompilerSet errorformat=
|
|
||||||
\%Omake:\ %r,
|
|
||||||
\%f:%l:\ warning:\ %m,
|
|
||||||
\%A%f:%l:\ (continued):,
|
|
||||||
\%W%f:%l:\ warning:,
|
|
||||||
\%A%f:%l:\ ,
|
|
||||||
\%-C\ \ \ %p%*[0123456789^]%.%#,
|
|
||||||
\%-C\ \ \ %.%#,
|
|
||||||
\%D%*\\a[%*\\d]:\ Entering\ directory\ `%f',
|
|
||||||
\%X%*\\a[%*\\d]:\ Leaving\ directory\ `%f',
|
|
||||||
\%DMaking\ %*\\a\ in\ %f,
|
|
||||||
\%Z%m
|
|
||||||
|
|
||||||
let &cpo = s:cpo_save
|
|
||||||
unlet s:cpo_save
|
|
||||||
@@ -1,27 +0,0 @@
|
|||||||
" Vim compiler file
|
|
||||||
" Compiler: Lahey/Fujitsu Fortran 95
|
|
||||||
" URL: http://www.unb.ca/chem/ajit/compiler/fortran_lf95.vim
|
|
||||||
" Maintainer: Ajit J. Thakkar (ajit AT unb.ca); <http://www.unb.ca/chem/ajit/>
|
|
||||||
" Version: 0.2
|
|
||||||
" Last Change: 2004 Mar 27
|
|
||||||
|
|
||||||
if exists("current_compiler")
|
|
||||||
finish
|
|
||||||
endif
|
|
||||||
let current_compiler = "fortran_lf95"
|
|
||||||
|
|
||||||
if exists(":CompilerSet") != 2 " older Vim always used :setlocal
|
|
||||||
command -nargs=* CompilerSet setlocal <args>
|
|
||||||
endif
|
|
||||||
|
|
||||||
let s:cposet=&cpoptions
|
|
||||||
set cpoptions-=C
|
|
||||||
|
|
||||||
CompilerSet errorformat=\ %#%n-%t:\ \"%f\"\\,\ line\ %l:%m,
|
|
||||||
\Error\ LINK\.%n:%m,
|
|
||||||
\Warning\ LINK\.%n:%m,
|
|
||||||
\%-G%.%#
|
|
||||||
CompilerSet makeprg=lf95
|
|
||||||
|
|
||||||
let &cpoptions=s:cposet
|
|
||||||
unlet s:cposet
|
|
||||||
@@ -1,28 +0,0 @@
|
|||||||
" Vim compiler file
|
|
||||||
" Compiler: HP aCC
|
|
||||||
" Maintainer: Matthias Ulrich <[email protected]>
|
|
||||||
" URL: http://www.subhome.de/vim/hp_acc.vim
|
|
||||||
" Last Change: 2004 Mar 27
|
|
||||||
"
|
|
||||||
" aCC --version says: "HP ANSI C++ B3910B A.03.13"
|
|
||||||
" This compiler has been tested on:
|
|
||||||
" hp-ux 10.20, hp-ux 11.0 and hp-ux 11.11 (64bit)
|
|
||||||
"
|
|
||||||
" Tim Brown's aCC is: "HP ANSI C++ B3910B A.03.33"
|
|
||||||
" and it also works fine...
|
|
||||||
|
|
||||||
if exists("current_compiler")
|
|
||||||
finish
|
|
||||||
endif
|
|
||||||
let current_compiler = "hp_acc"
|
|
||||||
|
|
||||||
if exists(":CompilerSet") != 2 " older Vim always used :setlocal
|
|
||||||
command -nargs=* CompilerSet setlocal <args>
|
|
||||||
endif
|
|
||||||
|
|
||||||
CompilerSet errorformat=%A%trror\ %n\:\ \"%f\"\\,\ line\ %l\ \#\ %m,
|
|
||||||
\%A%tarning\ %n\:\ \"%f\"\\,\ line\ %l\ \#\ %m\ %#,
|
|
||||||
\%Z\ \ \ \ %p^%.%#,
|
|
||||||
\%-C%.%#
|
|
||||||
|
|
||||||
" vim:ts=8:sw=4:cindent
|
|
||||||
@@ -1,18 +0,0 @@
|
|||||||
" Vim compiler file
|
|
||||||
" Compiler: icc - Intel C++
|
|
||||||
" Maintainer: Peter Puck <[email protected]>
|
|
||||||
" Last Change: 2004 Mar 27
|
|
||||||
|
|
||||||
if exists("current_compiler")
|
|
||||||
finish
|
|
||||||
endif
|
|
||||||
let current_compiler = "icc"
|
|
||||||
|
|
||||||
if exists(":CompilerSet") != 2 " older Vim always used :setlocal
|
|
||||||
command -nargs=* CompilerSet setlocal <args>
|
|
||||||
endif
|
|
||||||
|
|
||||||
" I think that Intel is calling the compiler icl under Windows
|
|
||||||
|
|
||||||
CompilerSet errorformat=%-Z%p^,%f(%l):\ remark\ #%n:%m,%f(%l)\ :\ (col.\ %c)\ remark:\ %m,%E%f(%l):\ error:\ %m,%E%f(%l):\ error:\ #%n:\ %m,%W%f(%l):\ warning\ #%n:\ %m,%W%f(%l):\ warning:\ %m,%-C%.%#
|
|
||||||
|
|
||||||
@@ -1,21 +0,0 @@
|
|||||||
" Vim compiler file
|
|
||||||
" Compiler: Intel C++ 7.1
|
|
||||||
" Maintainer: David Harrison <[email protected]>
|
|
||||||
" Last Change: 2004 May 16
|
|
||||||
|
|
||||||
if exists("current_compiler")
|
|
||||||
finish
|
|
||||||
endif
|
|
||||||
let current_compiler = "intel"
|
|
||||||
|
|
||||||
if exists(":CompilerSet") != 2 " older Vim always used :setlocal
|
|
||||||
command -nargs=* CompilerSet setlocal <args>
|
|
||||||
endif
|
|
||||||
|
|
||||||
CompilerSet errorformat=%E%f(%l):\ error:\ %m,
|
|
||||||
\%W%f(%l):\ warning:\ %m,
|
|
||||||
\%I%f(%l):\ remark\ #%n:\ %m,
|
|
||||||
\%+C\ \ %m.,
|
|
||||||
\%-Z\ \ %p^,
|
|
||||||
\%-G\\s%#,
|
|
||||||
\%-G%.%#
|
|
||||||
@@ -1,21 +0,0 @@
|
|||||||
" Vim compiler file
|
|
||||||
" Compiler: SGI IRIX 5.3 cc
|
|
||||||
" Maintainer: David Harrison <[email protected]>
|
|
||||||
" Last Change: 2004 Mar 27
|
|
||||||
|
|
||||||
if exists("current_compiler")
|
|
||||||
finish
|
|
||||||
endif
|
|
||||||
let current_compiler = "irix5_c"
|
|
||||||
|
|
||||||
if exists(":CompilerSet") != 2 " older Vim always used :setlocal
|
|
||||||
command -nargs=* CompilerSet setlocal <args>
|
|
||||||
endif
|
|
||||||
|
|
||||||
CompilerSet errorformat=\%Ecfe:\ Error:\ %f\\,\ line\ %l:\ %m,
|
|
||||||
\%Wcfe:\ Warning:\ %n:\ %f\\,\ line\ %l:\ %m,
|
|
||||||
\%Wcfe:\ Warning\ %n:\ %f\\,\ line\ %l:\ %m,
|
|
||||||
\%W(%l)\ \ Warning\ %n:\ %m,
|
|
||||||
\%-Z\ %p^,
|
|
||||||
\-G\\s%#,
|
|
||||||
\%-G%.%#
|
|
||||||
@@ -1,21 +0,0 @@
|
|||||||
" Vim compiler file
|
|
||||||
" Compiler: SGI IRIX 5.3 CC or NCC
|
|
||||||
" Maintainer: David Harrison <[email protected]>
|
|
||||||
" Last Change: 2004 Mar 27
|
|
||||||
|
|
||||||
if exists("current_compiler")
|
|
||||||
finish
|
|
||||||
endif
|
|
||||||
let current_compiler = "irix5_cpp"
|
|
||||||
|
|
||||||
if exists(":CompilerSet") != 2 " older Vim always used :setlocal
|
|
||||||
command -nargs=* CompilerSet setlocal <args>
|
|
||||||
endif
|
|
||||||
|
|
||||||
CompilerSet errorformat=%E\"%f\"\\,\ line\ %l:\ error(%n):\ ,
|
|
||||||
\%E\"%f\"\\,\ line\ %l:\ error(%n):\ %m,
|
|
||||||
\%W\"%f\"\\,\ line\ %l:\ warning(%n):\ %m,
|
|
||||||
\%+IC++\ prelinker:\ %m,
|
|
||||||
\%-Z\ \ %p%^,
|
|
||||||
\%+C\ %\\{10}%.%#,
|
|
||||||
\%-G%.%#
|
|
||||||
@@ -1,18 +0,0 @@
|
|||||||
" Vim compiler file
|
|
||||||
" Compiler: javac
|
|
||||||
" Maintainer: Doug Kearns <[email protected]>
|
|
||||||
" URL: http://mugca.its.monash.edu.au/~djkea2/vim/compiler/javac.vim
|
|
||||||
" Last Change: 2004 Apr 15
|
|
||||||
|
|
||||||
if exists("current_compiler")
|
|
||||||
finish
|
|
||||||
endif
|
|
||||||
let current_compiler = "javac"
|
|
||||||
|
|
||||||
if exists(":CompilerSet") != 2 " older Vim always used :setlocal
|
|
||||||
command -nargs=* CompilerSet setlocal <args>
|
|
||||||
endif
|
|
||||||
|
|
||||||
CompilerSet makeprg=javac
|
|
||||||
|
|
||||||
CompilerSet errorformat=%E%f:%l:\ %m,%-Z%p^,%-C%.%#,%-G%.%#
|
|
||||||
@@ -1,18 +0,0 @@
|
|||||||
" Vim Compiler File
|
|
||||||
" Compiler: Jikes
|
|
||||||
" Maintainer: Dan Sharp <dwsharp at hotmail dot com>
|
|
||||||
" Last Change: 2004 Mar 27
|
|
||||||
" URL: http://mywebpage.netscape.com/sharppeople/vim/compiler
|
|
||||||
|
|
||||||
if exists("current_compiler")
|
|
||||||
finish
|
|
||||||
endif
|
|
||||||
let current_compiler = "jikes"
|
|
||||||
|
|
||||||
if exists(":CompilerSet") != 2 " older Vim always used :setlocal
|
|
||||||
command -nargs=* CompilerSet setlocal <args>
|
|
||||||
endif
|
|
||||||
|
|
||||||
" Jikes defaults to printing output on stderr
|
|
||||||
CompilerSet makeprg=jikes\ -Xstdout\ +E\ \"%\"
|
|
||||||
CompilerSet errorformat=%f:%l:%v:%*\\d:%*\\d:%*\\s%m
|
|
||||||
@@ -1,21 +0,0 @@
|
|||||||
" Vim compiler file
|
|
||||||
" Compiler: SGI IRIX 6.5 MIPS C (cc)
|
|
||||||
" Maintainer: David Harrison <[email protected]>
|
|
||||||
" Last Change: 2004 Mar 27
|
|
||||||
|
|
||||||
if exists("current_compiler")
|
|
||||||
finish
|
|
||||||
endif
|
|
||||||
let current_compiler = "mips_c"
|
|
||||||
|
|
||||||
if exists(":CompilerSet") != 2 " older Vim always used :setlocal
|
|
||||||
command -nargs=* CompilerSet setlocal <args>
|
|
||||||
endif
|
|
||||||
|
|
||||||
CompilerSet errorformat=%Ecc\-%n\ %.%#:\ ERROR\ File\ =\ %f\%\\,\ Line\ =\ %l,
|
|
||||||
\%Wcc\-%n\ %.%#:\ WARNING\ File\ =\ %f\%\\,\ Line\ =\ %l,
|
|
||||||
\%Icc\-%n\ %.%#:\ REMARK\ File\ =\ %f\%\\,\ Line\ =\ %l,
|
|
||||||
\%+C\ \ %m.,
|
|
||||||
\%-Z\ \ %p^,
|
|
||||||
\%-G\\s%#,
|
|
||||||
\%-G%.%#
|
|
||||||
@@ -1,22 +0,0 @@
|
|||||||
" Vim compiler file
|
|
||||||
" Compiler: SGI IRIX 6.5 MIPSPro C (c89)
|
|
||||||
" Maintainer: David Harrison <[email protected]>
|
|
||||||
" Last Change: 2004 Mar 27
|
|
||||||
|
|
||||||
if exists("current_compiler")
|
|
||||||
finish
|
|
||||||
endif
|
|
||||||
let current_compiler = "mipspro_c89"
|
|
||||||
|
|
||||||
if exists(":CompilerSet") != 2 " older Vim always used :setlocal
|
|
||||||
command -nargs=* CompilerSet setlocal <args>
|
|
||||||
endif
|
|
||||||
|
|
||||||
CompilerSet errorformat=%Ecc\-%n\ %.%#:\ ERROR\ File\ =\ %f\%\\,\ Line\ =\ %l,
|
|
||||||
\%Wcc\-%n\ %.%#:\ WARNING\ File\ =\ %f\%\\,\ Line\ =\ %l,
|
|
||||||
\%Icc\-%n\ %.%#:\ REMARK\ File\ =\ %f\%\\,\ Line\ =\ %l,
|
|
||||||
\%-Z%p%^,
|
|
||||||
\%+C\ %\\{10}%m%.,
|
|
||||||
\%+C\ \ %m,
|
|
||||||
\%-G\\s%#,
|
|
||||||
\%-G%.%#
|
|
||||||
@@ -1,21 +0,0 @@
|
|||||||
" Vim compiler file
|
|
||||||
" Compiler: SGI IRIX 6.5 MIPSPro C++ (CC)
|
|
||||||
" Maintainer: David Harrison <[email protected]>
|
|
||||||
" Last Change: 2004 Mar 27
|
|
||||||
|
|
||||||
if exists("current_compiler")
|
|
||||||
finish
|
|
||||||
endif
|
|
||||||
let current_compiler = "mipspro_cpp"
|
|
||||||
|
|
||||||
if exists(":CompilerSet") != 2 " older Vim always used :setlocal
|
|
||||||
command -nargs=* CompilerSet setlocal <args>
|
|
||||||
endif
|
|
||||||
|
|
||||||
CompilerSet errorformat=%Ecc\-%n\ %.%#:\ ERROR\ File\ =\ %f\%\\,\ Line\ =\ %l,
|
|
||||||
\%Wcc\-%n\ %.%#:\ WARNING\ File\ =\ %f\%\\,\ Line\ =\ %l,
|
|
||||||
\%Icc\-%n\ %.%#:\ REMARK\ File\ =\ %f\%\\,\ Line\ =\ %l,
|
|
||||||
\%+C\ \ %m.,
|
|
||||||
\%-Z\ \ %p^,
|
|
||||||
\%-G\\s%#,
|
|
||||||
\%-G%.%#
|
|
||||||
@@ -1,20 +0,0 @@
|
|||||||
" Vim Compiler File
|
|
||||||
" Compiler: Modelsim Vcom
|
|
||||||
" Maintainer: Paul Baleme <[email protected]>
|
|
||||||
" Last Change: September 8, 2003
|
|
||||||
" Thanks to: [email protected]
|
|
||||||
|
|
||||||
if exists("current_compiler")
|
|
||||||
finish
|
|
||||||
endif
|
|
||||||
let current_compiler = "modelsim_vcom"
|
|
||||||
|
|
||||||
if exists(":CompilerSet") != 2 " older Vim always used :setlocal
|
|
||||||
command -nargs=* CompilerSet setlocal <args>
|
|
||||||
endif
|
|
||||||
|
|
||||||
"setlocal errorformat=\*\*\ %tRROR:\ %f(%l):\ %m,%tRROR:\ %f(%l):\ %m,%tARNING\[%*[0-9]\]:\ %f(%l):\ %m,\*\*\ %tRROR:\ %m,%tRROR:\ %m,%tARNING\[%*[0-9]\]:\ %m
|
|
||||||
|
|
||||||
"setlocal errorformat=%tRROR:\ %f(%l):\ %m,%tARNING\[%*[0-9]\]:\ %m
|
|
||||||
CompilerSet errorformat=\*\*\ %tRROR:\ %f(%l):\ %m,\*\*\ %tRROR:\ %m,\*\*\ %tARNING:\ %m,\*\*\ %tOTE:\ %m,%tRROR:\ %f(%l):\ %m,%tARNING\[%*[0-9]\]:\ %f(%l):\ %m,%tRROR:\ %m,%tARNING\[%*[0-9]\]:\ %m
|
|
||||||
|
|
||||||
@@ -1,17 +0,0 @@
|
|||||||
" Vim compiler file
|
|
||||||
" Compiler: Miscrosoft Visual C
|
|
||||||
" Maintainer: Bram Moolenaar <[email protected]>
|
|
||||||
" Last Change: 2004 Mar 19
|
|
||||||
|
|
||||||
if exists("current_compiler")
|
|
||||||
finish
|
|
||||||
endif
|
|
||||||
let current_compiler = "msvc"
|
|
||||||
|
|
||||||
if exists(":CompilerSet") != 2 " older Vim always used :setlocal
|
|
||||||
command -nargs=* CompilerSet setlocal <args>
|
|
||||||
endif
|
|
||||||
|
|
||||||
" The errorformat for MSVC is the default.
|
|
||||||
CompilerSet errorformat&
|
|
||||||
CompilerSet makeprg=nmake
|
|
||||||
@@ -1,15 +0,0 @@
|
|||||||
" Vim compiler file
|
|
||||||
" Compiler: ATT neato
|
|
||||||
" Maintainer: Marcos Macedo <[email protected]>
|
|
||||||
" Last Change: 2004 May 16
|
|
||||||
|
|
||||||
if exists("current_compiler")
|
|
||||||
finish
|
|
||||||
endif
|
|
||||||
let current_compiler = "neato"
|
|
||||||
|
|
||||||
if exists(":CompilerSet") != 2 " older Vim always used :setlocal
|
|
||||||
command -nargs=* CompilerSet setlocal <args>
|
|
||||||
endif
|
|
||||||
|
|
||||||
CompilerSet makeprg=neato\ -T$*\ \"%:p\"\ -o\ \"%:p:r.$*\"
|
|
||||||
@@ -1,24 +0,0 @@
|
|||||||
" Vim compiler file
|
|
||||||
" Compiler: onsgmls
|
|
||||||
" Maintainer: Robert Rowsome <[email protected]>
|
|
||||||
" Last Change: 2004 Mar 27
|
|
||||||
|
|
||||||
if exists("current_compiler")
|
|
||||||
finish
|
|
||||||
endif
|
|
||||||
let current_compiler = "onsgmls"
|
|
||||||
|
|
||||||
if exists(":CompilerSet") != 2 " older Vim always used :setlocal
|
|
||||||
command -nargs=* CompilerSet setlocal <args>
|
|
||||||
endif
|
|
||||||
|
|
||||||
let s:cpo_save = &cpo
|
|
||||||
set cpo-=C
|
|
||||||
|
|
||||||
CompilerSet makeprg=onsgmls\ -s\ %
|
|
||||||
|
|
||||||
CompilerSet errorformat=onsgmls:%f:%l:%c:%t:%m,
|
|
||||||
\onsgmls:%f:%l:%c:%m
|
|
||||||
|
|
||||||
let &cpo = s:cpo_save
|
|
||||||
unlet s:cpo_save
|
|
||||||
@@ -1,20 +0,0 @@
|
|||||||
" Vim compiler file
|
|
||||||
" Compiler: Apple Project Builder
|
|
||||||
" Maintainer: Alexander von Below ([email protected])
|
|
||||||
" Last Change: 2004 Mar 27
|
|
||||||
|
|
||||||
if exists("current_compiler")
|
|
||||||
finish
|
|
||||||
endif
|
|
||||||
let current_compiler = "pbx"
|
|
||||||
|
|
||||||
if exists(":CompilerSet") != 2 " older Vim always used :setlocal
|
|
||||||
command -nargs=* CompilerSet setlocal <args>
|
|
||||||
endif
|
|
||||||
|
|
||||||
" The compiler actually is gcc, so the errorformat is unchanged
|
|
||||||
CompilerSet errorformat&
|
|
||||||
|
|
||||||
" default make
|
|
||||||
CompilerSet makeprg=pbxbuild
|
|
||||||
|
|
||||||
@@ -1,39 +0,0 @@
|
|||||||
" Vim Compiler File
|
|
||||||
" Compiler: Perl syntax checks (perl -Wc)
|
|
||||||
" Maintainer: Christian J. Robinson <[email protected]>
|
|
||||||
" Last Change: 2004 Mar 27
|
|
||||||
|
|
||||||
if exists("current_compiler")
|
|
||||||
finish
|
|
||||||
endif
|
|
||||||
let current_compiler = "perl"
|
|
||||||
|
|
||||||
if exists(":CompilerSet") != 2 " older Vim always used :setlocal
|
|
||||||
command -nargs=* CompilerSet setlocal <args>
|
|
||||||
endif
|
|
||||||
|
|
||||||
let s:savecpo = &cpo
|
|
||||||
set cpo&vim
|
|
||||||
|
|
||||||
if getline(1) =~# '-[^ ]*T'
|
|
||||||
CompilerSet makeprg=perl\ -WTc\ %
|
|
||||||
else
|
|
||||||
CompilerSet makeprg=perl\ -Wc\ %
|
|
||||||
endif
|
|
||||||
|
|
||||||
CompilerSet errorformat=
|
|
||||||
\%-G%.%#had\ compilation\ errors.,
|
|
||||||
\%-G%.%#syntax\ OK,
|
|
||||||
\%m\ at\ %f\ line\ %l.,
|
|
||||||
\%+A%.%#\ at\ %f\ line\ %l\\,%.%#,
|
|
||||||
\%+C%.%#
|
|
||||||
|
|
||||||
" Explanation:
|
|
||||||
" %-G%.%#had\ compilation\ errors., - Ignore the obvious.
|
|
||||||
" %-G%.%#syntax\ OK, - Don't include the 'a-okay' message.
|
|
||||||
" %m\ at\ %f\ line\ %l., - Most errors...
|
|
||||||
" %+A%.%#\ at\ %f\ line\ %l\\,%.%#, - As above, including ', near ...'
|
|
||||||
" %+C%.%# - ... Which can be multi-line.
|
|
||||||
|
|
||||||
let &cpo = s:savecpo
|
|
||||||
unlet s:savecpo
|
|
||||||
@@ -1,16 +0,0 @@
|
|||||||
" Vim compiler file
|
|
||||||
" Compiler: Unit testing tool for Python
|
|
||||||
" Maintainer: Max Ischenko <[email protected]>
|
|
||||||
" Last Change: 2004 Mar 27
|
|
||||||
|
|
||||||
if exists("current_compiler")
|
|
||||||
finish
|
|
||||||
endif
|
|
||||||
let current_compiler = "pyunit"
|
|
||||||
|
|
||||||
if exists(":CompilerSet") != 2 " older Vim always used :setlocal
|
|
||||||
command -nargs=* CompilerSet setlocal <args>
|
|
||||||
endif
|
|
||||||
|
|
||||||
CompilerSet efm=%C\ %.%#,%A\ \ File\ \"%f\"\\,\ line\ %l%.%#,%Z%[%^\ ]%\\@=%m
|
|
||||||
|
|
||||||
@@ -1,33 +0,0 @@
|
|||||||
" Vim compiler file
|
|
||||||
" Compiler: reStructuredText Documentation Format
|
|
||||||
" Maintainer: Nikolai Weibull <[email protected]>
|
|
||||||
" URL: http://www.pcppopper.org/vim/compiler/pcp/rst/
|
|
||||||
" Latest Revision: 2004-05-22
|
|
||||||
" arch-tag: ac64a95a-5d45-493d-a9f9-f96fc8568657
|
|
||||||
|
|
||||||
if exists("current_compiler")
|
|
||||||
finish
|
|
||||||
endif
|
|
||||||
let current_compiler = "rst"
|
|
||||||
|
|
||||||
if exists(":CompilerSet") != 2 " older Vim always used :setlocal
|
|
||||||
command -nargs=* CompilerSet setlocal <args>
|
|
||||||
endif
|
|
||||||
|
|
||||||
let s:cpo_save = &cpo
|
|
||||||
set cpo-=C
|
|
||||||
|
|
||||||
CompilerSet errorformat=
|
|
||||||
\%f:%l:\ (%tEBUG/0)\ %m,
|
|
||||||
\%f:%l:\ (%tNFO/1)\ %m,
|
|
||||||
\%f:%l:\ (%tARNING/2)\ %m,
|
|
||||||
\%f:%l:\ (%tRROR/3)\ %m,
|
|
||||||
\%f:%l:\ (%tEVERE/3)\ %m,
|
|
||||||
\%D%*\\a[%*\\d]:\ Entering\ directory\ `%f',
|
|
||||||
\%X%*\\a[%*\\d]:\ Leaving\ directory\ `%f',
|
|
||||||
\%DMaking\ %*\\a\ in\ %f
|
|
||||||
|
|
||||||
let &cpo = s:cpo_save
|
|
||||||
unlet s:cpo_save
|
|
||||||
|
|
||||||
" vim: set sts=2 sw=2:
|
|
||||||
@@ -1,62 +0,0 @@
|
|||||||
" Vim compiler file
|
|
||||||
" Compiler: Ruby syntax check and/or error reporting
|
|
||||||
" Maintainer: Tim Hammerquist <[email protected]>
|
|
||||||
" Last Change: Tue Jul 16 00:38:00 PDT 2002
|
|
||||||
"
|
|
||||||
" Changelog:
|
|
||||||
" 0.2: script saves and restores 'cpoptions' value to prevent problems with
|
|
||||||
" line continuations
|
|
||||||
" 0.1: initial release
|
|
||||||
"
|
|
||||||
" Contributors:
|
|
||||||
" Hugh Sasse <[email protected]>
|
|
||||||
" Doug Kearns <[email protected]>
|
|
||||||
"
|
|
||||||
" Todo:
|
|
||||||
" match error type %m
|
|
||||||
"
|
|
||||||
" Comments:
|
|
||||||
" I know this file isn't perfect. If you have any questions, suggestions,
|
|
||||||
" patches, etc., please don't hesitate to let me know.
|
|
||||||
"
|
|
||||||
" This is my first experience with 'errorformat' and compiler plugins and
|
|
||||||
" I welcome any input from more experienced (or clearer-thinking)
|
|
||||||
" individuals.
|
|
||||||
|
|
||||||
if exists("current_compiler")
|
|
||||||
finish
|
|
||||||
endif
|
|
||||||
let current_compiler = "ruby"
|
|
||||||
|
|
||||||
if exists(":CompilerSet") != 2 " older Vim always used :setlocal
|
|
||||||
command -nargs=* CompilerSet setlocal <args>
|
|
||||||
endif
|
|
||||||
|
|
||||||
let s:cpo_save = &cpo
|
|
||||||
set cpo-=C
|
|
||||||
|
|
||||||
" default settings runs script normally
|
|
||||||
" add '-c' switch to run syntax check only:
|
|
||||||
"
|
|
||||||
" CompilerSet makeprg=ruby\ -wc\ $*
|
|
||||||
"
|
|
||||||
" or add '-c' at :make command line:
|
|
||||||
"
|
|
||||||
" :make -c %<CR>
|
|
||||||
"
|
|
||||||
CompilerSet makeprg=ruby\ -w\ $*
|
|
||||||
|
|
||||||
CompilerSet errorformat=
|
|
||||||
\%+E%f:%l:\ parse\ error,
|
|
||||||
\%W%f:%l:\ warning:\ %m,
|
|
||||||
\%E%f:%l:in\ %*[^:]:\ %m,
|
|
||||||
\%E%f:%l:\ %m,
|
|
||||||
\%-C%\tfrom\ %f:%l:in\ %.%#,
|
|
||||||
\%-Z%\tfrom\ %f:%l,
|
|
||||||
\%-Z%p^,
|
|
||||||
\%-G%.%#
|
|
||||||
|
|
||||||
let &cpo = s:cpo_save
|
|
||||||
unlet s:cpo_save
|
|
||||||
|
|
||||||
" vim: ft=vim
|
|
||||||
@@ -1,28 +0,0 @@
|
|||||||
" Vim compiler file
|
|
||||||
" Compiler: se (SmartEiffel Compiler)
|
|
||||||
" Maintainer: Doug Kearns <[email protected]>
|
|
||||||
" URL: http://mugca.its.monash.edu.au/~djkea2/vim/compiler/se.vim
|
|
||||||
" Last Change: 2004 May 16
|
|
||||||
|
|
||||||
if exists("current_compiler")
|
|
||||||
finish
|
|
||||||
endif
|
|
||||||
let current_compiler = "se"
|
|
||||||
|
|
||||||
if exists(":CompilerSet") != 2 " older Vim always used :setlocal
|
|
||||||
command -nargs=* CompilerSet setlocal <args>
|
|
||||||
endif
|
|
||||||
|
|
||||||
let s:cpo_save = &cpo
|
|
||||||
set cpo-=C
|
|
||||||
|
|
||||||
CompilerSet makeprg=compile\ %
|
|
||||||
|
|
||||||
CompilerSet errorformat=%W******\ Warning:\ %m,
|
|
||||||
\%E******\ Fatal\ Error:\ %m,
|
|
||||||
\%E******\ Error:\ %m,
|
|
||||||
\%CLine\ %l\ column\ %c\ in\ %\\w%\\+\ (%f)\ :,
|
|
||||||
\%-G%.%#
|
|
||||||
|
|
||||||
let &cpo = s:cpo_save
|
|
||||||
unlet s:cpo_save
|
|
||||||
@@ -1,70 +0,0 @@
|
|||||||
" Vim compiler file
|
|
||||||
" Compiler: splint/lclint (C source code checker)
|
|
||||||
" Maintainer: Ralf Wildenhues <[email protected]>
|
|
||||||
" Splint Home: http://www.splint.org/
|
|
||||||
" Last Change: $Date: 2004-07-14 01:28:30 +0200 (Mi, 14. Jul 2004) $
|
|
||||||
" $Revision: 1.1 $
|
|
||||||
|
|
||||||
if exists("current_compiler")
|
|
||||||
finish
|
|
||||||
endif
|
|
||||||
let current_compiler = "splint"
|
|
||||||
|
|
||||||
if exists(":CompilerSet") != 2 " older Vim always used :setlocal
|
|
||||||
command -nargs=* CompilerSet setlocal <args>
|
|
||||||
endif
|
|
||||||
|
|
||||||
let s:cpo_save = &cpo
|
|
||||||
set cpo-=C
|
|
||||||
|
|
||||||
" adapt this if you want to check more than one file at a time.
|
|
||||||
" put command line options in .splintrc or ~/.splintrc
|
|
||||||
CompilerSet makeprg=splint\ %
|
|
||||||
|
|
||||||
" Note: when using the new array bounds checking flags: Each warning
|
|
||||||
" usually has several lines and several references to source code mostly
|
|
||||||
" within one or two lines (see sample warning below). The easiest way
|
|
||||||
" not to mess up file name detection and not to jump to all positions is
|
|
||||||
" to add something like
|
|
||||||
" -linelen 500 +boundscompacterrormessages
|
|
||||||
" to your .splintrc and 'set cmdheight=4' or more.
|
|
||||||
" TODO: reliable way to distinguish file names and constraints.
|
|
||||||
"
|
|
||||||
" sample warning (generic):
|
|
||||||
"
|
|
||||||
"foo.c:1006:12: Clauses exit with var referencing local storage in one
|
|
||||||
" case, fresh storage in other case
|
|
||||||
" foo.c:1003:2: Fresh storage var allocated
|
|
||||||
"
|
|
||||||
" sample warning (bounds checking):
|
|
||||||
"
|
|
||||||
"bounds.c: (in function updateEnv)
|
|
||||||
"bounds.c:10:5: Possible out-of-bounds store:
|
|
||||||
" strcpy(str, tmp)
|
|
||||||
" Unable to resolve constraint:
|
|
||||||
" requires maxSet(str @ bounds.c:10:13) >= maxRead(getenv("MYENV") @
|
|
||||||
" bounds.c:6:9)
|
|
||||||
" needed to satisfy precondition:
|
|
||||||
" requires maxSet(str @ bounds.c:10:13) >= maxRead(tmp @ bounds.c:10:18)
|
|
||||||
" derived from strcpy precondition: requires maxSet(<parameter 1>) >=
|
|
||||||
" maxRead(<parameter 2>)
|
|
||||||
" A memory write may write to an address beyond the allocated buffer. (Use
|
|
||||||
" -boundswrite to inhibit warning)
|
|
||||||
|
|
||||||
CompilerSet errorformat=%OLCLint*m,
|
|
||||||
\%OSplint*m,
|
|
||||||
\%*[\ ]%f:%l:%c:\ %m,
|
|
||||||
\%*[\ ]%f:%l:\ %m,
|
|
||||||
\%*[^\"]\"%f\"%*\\D%l:\ %m,
|
|
||||||
\\"%f\"%*\\D%l:\ %m,
|
|
||||||
\%A%f:%l:%c:\ %m,
|
|
||||||
\%A%f:%l:%m,
|
|
||||||
\\"%f\"\\,
|
|
||||||
\\ line\ %l%*\\D%c%*[^\ ]\ %m,
|
|
||||||
\%D%*\\a[%*\\d]:\ Entering\ directory\ `%f',
|
|
||||||
\%X%*\\a[%*\\d]:\ Leaving\ directory\ `%f',
|
|
||||||
\%DMaking\ %*\\a\ in\ %f,
|
|
||||||
\%C\ \ %m
|
|
||||||
|
|
||||||
let &cpo = s:cpo_save
|
|
||||||
unlet s:cpo_save
|
|
||||||
@@ -1,18 +0,0 @@
|
|||||||
" Vim compiler file
|
|
||||||
" Compiler: tcl
|
|
||||||
" Maintainer: Doug Kearns <[email protected]>
|
|
||||||
" URL: http://mugca.its.monash.edu.au/~djkea2/vim/compiler/tcl.vim
|
|
||||||
" Last Change: 2004 Mar 27
|
|
||||||
|
|
||||||
if exists("current_compiler")
|
|
||||||
finish
|
|
||||||
endif
|
|
||||||
let current_compiler = "tcl"
|
|
||||||
|
|
||||||
if exists(":CompilerSet") != 2 " older Vim always used :setlocal
|
|
||||||
command -nargs=* CompilerSet setlocal <args>
|
|
||||||
endif
|
|
||||||
|
|
||||||
CompilerSet makeprg=tcl
|
|
||||||
|
|
||||||
CompilerSet errorformat=%EError:\ %m,%+Z\ %\\{4}(file\ \"%f\"\ line\ %l),%-G%.%#
|
|
||||||
@@ -1,68 +0,0 @@
|
|||||||
" Vim compiler file
|
|
||||||
" Compiler: TeX
|
|
||||||
" Maintainer: Artem Chuprina <[email protected]>
|
|
||||||
" Last Change: 2004 Mar 27
|
|
||||||
|
|
||||||
if exists("current_compiler")
|
|
||||||
finish
|
|
||||||
endif
|
|
||||||
|
|
||||||
if exists(":CompilerSet") != 2 " older Vim always used :setlocal
|
|
||||||
command -nargs=* CompilerSet setlocal <args>
|
|
||||||
endif
|
|
||||||
|
|
||||||
" If makefile exists and we are not asked to ignore it, we use standard make
|
|
||||||
" (do not redefine makeprg)
|
|
||||||
if exists('b:tex_ignore_makefile') || exists('g:tex_ignore_makefile') ||
|
|
||||||
\(!filereadable('Makefile') && !filereadable('makefile'))
|
|
||||||
" If buffer-local variable 'tex_flavor' exists, it defines TeX flavor,
|
|
||||||
" otherwize the same for global variable with same name, else it will be
|
|
||||||
" LaTeX
|
|
||||||
if exists("b:tex_flavor")
|
|
||||||
let current_compiler = b:tex_flavor
|
|
||||||
elseif exists("g:tex_flavor")
|
|
||||||
let current_compiler = g:tex_flavor
|
|
||||||
else
|
|
||||||
let current_compiler = "latex"
|
|
||||||
endif
|
|
||||||
let &l:makeprg=current_compiler.' -interaction=nonstopmode'
|
|
||||||
else
|
|
||||||
let current_compiler = 'make'
|
|
||||||
endif
|
|
||||||
|
|
||||||
let s:cpo_save = &cpo
|
|
||||||
set cpo-=C
|
|
||||||
|
|
||||||
" Value errorformat are taken from vim help, see :help errorformat-LaTeX, with
|
|
||||||
" addition from Srinath Avadhanula <[email protected]>
|
|
||||||
CompilerSet errorformat=%E!\ LaTeX\ %trror:\ %m,
|
|
||||||
\%E!\ %m,
|
|
||||||
\%+WLaTeX\ %.%#Warning:\ %.%#line\ %l%.%#,
|
|
||||||
\%+W%.%#\ at\ lines\ %l--%*\\d,
|
|
||||||
\%WLaTeX\ %.%#Warning:\ %m,
|
|
||||||
\%Cl.%l\ %m,
|
|
||||||
\%+C\ \ %m.,
|
|
||||||
\%+C%.%#-%.%#,
|
|
||||||
\%+C%.%#[]%.%#,
|
|
||||||
\%+C[]%.%#,
|
|
||||||
\%+C%.%#%[{}\\]%.%#,
|
|
||||||
\%+C<%.%#>%.%#,
|
|
||||||
\%C\ \ %m,
|
|
||||||
\%-GSee\ the\ LaTeX%m,
|
|
||||||
\%-GType\ \ H\ <return>%m,
|
|
||||||
\%-G\ ...%.%#,
|
|
||||||
\%-G%.%#\ (C)\ %.%#,
|
|
||||||
\%-G(see\ the\ transcript%.%#),
|
|
||||||
\%-G\\s%#,
|
|
||||||
\%+O(%*[^()])%r,
|
|
||||||
\%+O%*[^()](%*[^()])%r,
|
|
||||||
\%+P(%f%r,
|
|
||||||
\%+P\ %\\=(%f%r,
|
|
||||||
\%+P%*[^()](%f%r,
|
|
||||||
\%+P[%\\d%[^()]%#(%f%r,
|
|
||||||
\%+Q)%r,
|
|
||||||
\%+Q%*[^()])%r,
|
|
||||||
\%+Q[%\\d%*[^()])%r
|
|
||||||
|
|
||||||
let &cpo = s:cpo_save
|
|
||||||
unlet s:cpo_save
|
|
||||||
@@ -1,29 +0,0 @@
|
|||||||
" Vim compiler file
|
|
||||||
" Compiler: HTML Tidy
|
|
||||||
" Maintainer: Doug Kearns <[email protected]>
|
|
||||||
" URL: http://mugca.its.monash.edu.au/~djkea2/vim/compiler/tidy.vim
|
|
||||||
" Last Change: 2004 Mar 27
|
|
||||||
|
|
||||||
" NOTE: set 'tidy_compiler_040800' if you are using the 4th August 2000 release
|
|
||||||
" of HTML Tidy.
|
|
||||||
|
|
||||||
if exists("current_compiler")
|
|
||||||
finish
|
|
||||||
endif
|
|
||||||
let current_compiler = "tidy"
|
|
||||||
|
|
||||||
if exists(":CompilerSet") != 2 " older Vim always used :setlocal
|
|
||||||
command -nargs=* CompilerSet setlocal <args>
|
|
||||||
endif
|
|
||||||
|
|
||||||
" this is needed to work around a bug in the 04/08/00 release of tidy which
|
|
||||||
" failed to set the filename if the -quiet option was used
|
|
||||||
if exists("tidy_compiler_040800")
|
|
||||||
CompilerSet makeprg=tidy\ -errors\ --gnu-emacs\ yes\ %
|
|
||||||
else
|
|
||||||
CompilerSet makeprg=tidy\ -quiet\ -errors\ --gnu-emacs\ yes\ %
|
|
||||||
endif
|
|
||||||
|
|
||||||
" sample warning: foo.html:8:1: Warning: inserting missing 'foobar' element
|
|
||||||
" sample error: foo.html:9:2: Error: <foobar> is not recognized!
|
|
||||||
CompilerSet errorformat=%f:%l:%c:\ Error:%m,%f:%l:%c:\ Warning:%m,%-G%.%#
|
|
||||||
@@ -1,29 +0,0 @@
|
|||||||
" Vim compiler file
|
|
||||||
" Compiler: xmllint
|
|
||||||
" Maintainer: Doug Kearns <[email protected]>
|
|
||||||
" URL: http://mugca.its.monash.edu.au/~djkea2/vim/compiler/xmllint.vim
|
|
||||||
" Last Change: 2004 Mar 27
|
|
||||||
|
|
||||||
if exists("current_compiler")
|
|
||||||
finish
|
|
||||||
endif
|
|
||||||
let current_compiler = "xmllint"
|
|
||||||
|
|
||||||
if exists(":CompilerSet") != 2 " older Vim always used :setlocal
|
|
||||||
command -nargs=* CompilerSet setlocal <args>
|
|
||||||
endif
|
|
||||||
|
|
||||||
let s:cpo_save = &cpo
|
|
||||||
set cpo-=C
|
|
||||||
|
|
||||||
CompilerSet makeprg=xmllint\ --valid\ --noout\
|
|
||||||
|
|
||||||
CompilerSet errorformat=%E%f:%l:\ error:\ %m,
|
|
||||||
\%W%f:%l:\ warning:\ %m,
|
|
||||||
\%E%f:%l:\ validity\ error:\ %m,
|
|
||||||
\%W%f:%l:\ validity\ warning:\ %m,
|
|
||||||
\%-Z%p^,
|
|
||||||
\%-G%.%#
|
|
||||||
|
|
||||||
let &cpo = s:cpo_save
|
|
||||||
unlet s:cpo_save
|
|
||||||
@@ -1,23 +0,0 @@
|
|||||||
" Vim Compiler File
|
|
||||||
" Compiler: xmlwf
|
|
||||||
" Maintainer: Robert Rowsome <[email protected]>
|
|
||||||
" Last Change: 2004 Mar 27
|
|
||||||
|
|
||||||
if exists("current_compiler")
|
|
||||||
finish
|
|
||||||
endif
|
|
||||||
let current_compiler = "xmlwf"
|
|
||||||
|
|
||||||
let s:cpo_save = &cpo
|
|
||||||
set cpo&vim
|
|
||||||
|
|
||||||
if exists(":CompilerSet") != 2 " older Vim always used :setlocal
|
|
||||||
command -nargs=* CompilerSet setlocal <args>
|
|
||||||
endif
|
|
||||||
|
|
||||||
CompilerSet makeprg=xmlwf\ %
|
|
||||||
|
|
||||||
CompilerSet errorformat=%f:%l%c:%m
|
|
||||||
|
|
||||||
let &cpo = s:cpo_save
|
|
||||||
unlet s:cpo_save
|
|
||||||
@@ -1,25 +0,0 @@
|
|||||||
" This Vim script deletes all the menus, so that they can be redefined.
|
|
||||||
" Warning: This also deletes all menus defined by the user!
|
|
||||||
"
|
|
||||||
" Maintainer: Bram Moolenaar <[email protected]>
|
|
||||||
" Last Change: 2001 May 27
|
|
||||||
|
|
||||||
aunmenu *
|
|
||||||
|
|
||||||
silent! unlet did_install_default_menus
|
|
||||||
silent! unlet did_install_syntax_menu
|
|
||||||
if exists("did_menu_trans")
|
|
||||||
menutrans clear
|
|
||||||
unlet did_menu_trans
|
|
||||||
endif
|
|
||||||
|
|
||||||
silent! unlet find_help_dialog
|
|
||||||
|
|
||||||
silent! unlet menutrans_help_dialog
|
|
||||||
silent! unlet menutrans_path_dialog
|
|
||||||
silent! unlet menutrans_tags_dialog
|
|
||||||
silent! unlet menutrans_textwidth_dialog
|
|
||||||
silent! unlet menutrans_fileformat_dialog
|
|
||||||
silent! unlet menutrans_no_file
|
|
||||||
|
|
||||||
" vim: set sw=2 :
|
|
||||||
@@ -1,323 +0,0 @@
|
|||||||
*arabic.txt* For Vim version 6.3. Last change: 2003 May 11
|
|
||||||
|
|
||||||
|
|
||||||
VIM REFERENCE MANUAL by Nadim Shaikli
|
|
||||||
|
|
||||||
|
|
||||||
Arabic Language support (options & mappings) for Vim *Arabic*
|
|
||||||
|
|
||||||
{Vi does not have any of these commands}
|
|
||||||
|
|
||||||
*E800*
|
|
||||||
In order to use right-to-left and Arabic mapping support, it is
|
|
||||||
necessary to compile VIM with the |+arabic| feature.
|
|
||||||
|
|
||||||
These functions have been created by Nadim Shaikli <nadim-at-arabeyes.org>
|
|
||||||
|
|
||||||
It is best to view this file with these settings within VIM's GUI: >
|
|
||||||
|
|
||||||
:set encoding=utf-8
|
|
||||||
:set arabicshape
|
|
||||||
|
|
||||||
|
|
||||||
Introduction
|
|
||||||
------------
|
|
||||||
Arabic is a rather demanding language in which a number of special
|
|
||||||
features are required. Characters are right-to-left oriented and
|
|
||||||
ought to appear as such on the screen (ie. from right to left).
|
|
||||||
Arabic also requires shaping of its characters, meaning the same
|
|
||||||
character has a different visual form based on its relative location
|
|
||||||
within a word (initial, medial, final or stand-alone). Arabic also
|
|
||||||
requires two different forms of combining and the ability, in
|
|
||||||
certain instances, to either superimpose upto two characters on top
|
|
||||||
of another (composing) or the actual substitution of two characters
|
|
||||||
into one (combining). Lastly, to display Arabic properly one will
|
|
||||||
require not only ISO-8859-6 (U+0600-U+06FF) fonts, but will also
|
|
||||||
require Presentation Form-B (U+FE70-U+FEFF) fonts both of which are
|
|
||||||
subsets within a so-called ISO-10646-1 font.
|
|
||||||
|
|
||||||
The commands, prompts and help files are not in Arabic, therefore
|
|
||||||
the user interface remains the standard Vi interface.
|
|
||||||
|
|
||||||
|
|
||||||
Highlights
|
|
||||||
----------
|
|
||||||
o Editing left-to-right files as in the original VIM hasn't changed.
|
|
||||||
|
|
||||||
o Viewing and editing files in right-to-left windows. File
|
|
||||||
orientation is per window, so it is possible to view the same
|
|
||||||
file in right-to-left and left-to-right modes, simultaneously.
|
|
||||||
|
|
||||||
o No special terminal with right-to-left capabilities is required.
|
|
||||||
The right-to-left changes are completely hardware independent.
|
|
||||||
Only Arabic fonts are necessary.
|
|
||||||
|
|
||||||
o Compatible with the original VIM. Almost all features work in
|
|
||||||
right-to-left mode (there are liable to be bugs).
|
|
||||||
|
|
||||||
o Changing keyboard mapping and reverse insert modes using a single
|
|
||||||
command.
|
|
||||||
|
|
||||||
o Toggling complete Arabic support via a single command.
|
|
||||||
|
|
||||||
o While in Arabic mode, numbers are entered from left to right. Upon
|
|
||||||
entering a none number character, that character will be inserted
|
|
||||||
just into the left of the last number.
|
|
||||||
|
|
||||||
o Arabic keymapping on the command line in reverse insert mode.
|
|
||||||
|
|
||||||
o Proper Bidirectional functionality is possible given VIM is
|
|
||||||
started within a Bidi capable terminal emulator.
|
|
||||||
|
|
||||||
|
|
||||||
Arabic Fonts *arabicfonts*
|
|
||||||
------------
|
|
||||||
|
|
||||||
VIM requires monospaced fonts of which there are many out there.
|
|
||||||
Arabic requires ISO-8859-6 as well as Presentation Form-B fonts
|
|
||||||
(without Form-B, Arabic will _NOT_ be usable). It is highly
|
|
||||||
recommended that users search for so-called 'ISO-10646-1' fonts.
|
|
||||||
Do an Internet search or check www.arabeyes.org for further
|
|
||||||
info on where to attain the necessary Arabic fonts.
|
|
||||||
|
|
||||||
|
|
||||||
Font Installation
|
|
||||||
-----------------
|
|
||||||
|
|
||||||
o Installation of fonts for X Window systems (Unix/Linux)
|
|
||||||
|
|
||||||
Depending on your system, copy your_ARABIC_FONT file into a
|
|
||||||
directory of your choice. Change to the directory containing
|
|
||||||
the Arabic fonts and execute the following commands:
|
|
||||||
|
|
||||||
% mkfontdir
|
|
||||||
% xset +fp path_name_of_arabic_fonts_directory
|
|
||||||
|
|
||||||
|
|
||||||
Usage
|
|
||||||
-----
|
|
||||||
Prior to the actual usage of Arabic within VIM, a number of settings
|
|
||||||
need to be accounted for and invoked.
|
|
||||||
|
|
||||||
o Setting the Arabic fonts
|
|
||||||
|
|
||||||
+ For VIM GUI set the 'guifont' to your_ARABIC_FONT. This is done
|
|
||||||
by entering the following command in the VIM window.
|
|
||||||
>
|
|
||||||
:set guifont=your_ARABIC_FONT
|
|
||||||
<
|
|
||||||
NOTE: the string 'your_ARABIC_FONT' is used to denote a complete
|
|
||||||
font name akin to that used in linux/unix system.
|
|
||||||
(eg. -misc-fixed-medium-r-normal--20-200-75-75-c-100-iso10646-1)
|
|
||||||
|
|
||||||
You can append the 'guifont' set command to your .vimrc file
|
|
||||||
in order to get the same above noted results. In other words,
|
|
||||||
you can include ':set guifont=your_ARABIC_FONT' to your .vimrc
|
|
||||||
file.
|
|
||||||
|
|
||||||
+ Under the X Window environment, you can also start VIM with
|
|
||||||
'-fn your_ARABIC_FONT' option.
|
|
||||||
|
|
||||||
o Setting the appropriate character Encoding
|
|
||||||
To enable the correct Arabic encoding the following command needs
|
|
||||||
to be appended,
|
|
||||||
>
|
|
||||||
:set encoding=utf-8
|
|
||||||
<
|
|
||||||
to your .vimrc file (entering the command manually into you VIM
|
|
||||||
window is highly discouraged). In short, include ':set
|
|
||||||
encoding=utf-8' to your .vimrc file.
|
|
||||||
|
|
||||||
Attempts to use Arabic without UTF-8 will result the following
|
|
||||||
warning message,
|
|
||||||
|
|
||||||
*W17* >
|
|
||||||
Arabic requires UTF-8, do ':set encoding=utf-8'
|
|
||||||
|
|
||||||
o Enable Arabic settings [short-cut]
|
|
||||||
|
|
||||||
In order to simplify and streamline things, you can either invoke
|
|
||||||
VIM with the command-line option,
|
|
||||||
|
|
||||||
% vim -A my_utf8_arabic_file ...
|
|
||||||
|
|
||||||
or enable 'arabic' via the following command within VIM
|
|
||||||
>
|
|
||||||
:set arabic
|
|
||||||
<
|
|
||||||
The two above noted possible invocations are the preferred manner
|
|
||||||
in which users are instructed to proceed. Baring an enabled 'termbidi'
|
|
||||||
setting, both command options:
|
|
||||||
|
|
||||||
1. set the appropriate keymap
|
|
||||||
2. enable the deletion of a single combined pair character
|
|
||||||
3. enable rightleft mode
|
|
||||||
4. enable rightleftcmd mode (affecting the command-line)
|
|
||||||
5. enable arabicshape mode (do visual character alterations)
|
|
||||||
|
|
||||||
You may also append the command to your .vimrc file and simply
|
|
||||||
include ':set arabic' to it.
|
|
||||||
|
|
||||||
You are also capable of disabling Arabic support via
|
|
||||||
>
|
|
||||||
:set noarabic
|
|
||||||
<
|
|
||||||
which resets everything that the command had enabled without touching
|
|
||||||
the global settings as they could affect other possible open buffers.
|
|
||||||
In short the 'noarabic' command,
|
|
||||||
|
|
||||||
1. resets to the alternate keymap
|
|
||||||
2. disables the deletion of a single combined pair character
|
|
||||||
3. disables rightleft mode
|
|
||||||
|
|
||||||
NOTE: the 'arabic' command takes into consideration 'termbidi' for
|
|
||||||
possible external bi-directional (bidi) support from the
|
|
||||||
terminal ("mlterm" for instance offers such support).
|
|
||||||
'termbidi', if available, is superior to rightleft support
|
|
||||||
and its support is preferred due to its level of offerings.
|
|
||||||
'arabic' when 'termbidi' is enabled only sets the keymap.
|
|
||||||
|
|
||||||
If, on the other hand, you'd like to be verbose and explicit and
|
|
||||||
are opting not to use the 'arabic' short-cut command, here's what
|
|
||||||
is needed (ie. if you use ':set arabic' you can skip this section) -
|
|
||||||
|
|
||||||
+ Arabic Keymapping Activation
|
|
||||||
|
|
||||||
To activate the Arabic keymap (ie. to remap your english/latin
|
|
||||||
keyboard to look-n-feel like a standard Arabic one), set the
|
|
||||||
'keymap' command to "arabic". This is done by entering
|
|
||||||
>
|
|
||||||
:set keymap=arabic
|
|
||||||
<
|
|
||||||
in your VIM window. You can also append the 'keymap' set command to
|
|
||||||
your .vimrc file. In other words, you can include ':set keymap=arabic'
|
|
||||||
to your .vimrc file.
|
|
||||||
|
|
||||||
To turn toggle (or switch) your keymapping between Arabic and the
|
|
||||||
default mapping (english), its advised that users use the 'CTRL-^'
|
|
||||||
key press while in insert (or add/replace) mode. The command-line
|
|
||||||
will display your current mapping by displaying an "Arabic" string
|
|
||||||
next to your insertion mode (eg. -- INSERT Arabic --) indicating
|
|
||||||
your current keymap.
|
|
||||||
|
|
||||||
+ Arabic deletion of a combined pair character
|
|
||||||
|
|
||||||
By default VIM has the 'delcombine' option disabled. This option
|
|
||||||
allows the deletion of ALEF in a LAM_ALEF (LAA) combined character
|
|
||||||
and still retain the LAM (ie. it reverts to treating the combined
|
|
||||||
character as its natural two characters form -- this also pertains
|
|
||||||
to harakat and their combined forms). You can enable this option
|
|
||||||
by entering
|
|
||||||
>
|
|
||||||
:set delcombine
|
|
||||||
<
|
|
||||||
in our VIM window. You can also append the 'delcombine' set command
|
|
||||||
to your .vimrc file. In other words, you can include ':set delcombine'
|
|
||||||
to your .vimrc file.
|
|
||||||
|
|
||||||
+ Arabic right-to-left Mode
|
|
||||||
|
|
||||||
By default VIM starts in Left-to-right mode. 'rightleft' is the
|
|
||||||
command that allows one to alter a window's orientation - that can
|
|
||||||
be accomplished via,
|
|
||||||
|
|
||||||
- Toggling between left-to-right and right-to-left modes is
|
|
||||||
accomplished through ':set rightleft' and ':set norightleft'.
|
|
||||||
|
|
||||||
- While in Left-to-right mode, enter ':set rl' in the command line
|
|
||||||
('rl' is the abbreviation for rightleft).
|
|
||||||
|
|
||||||
- Put the ':set rl' line in your '.vimrc' file to start the VIM in
|
|
||||||
right-to-left mode permanently.
|
|
||||||
|
|
||||||
+ Arabic right-to-left command-line Mode
|
|
||||||
|
|
||||||
For certain commands the editing can be done in right-to-left mode.
|
|
||||||
Currently this is only applicable to search commands.
|
|
||||||
|
|
||||||
This is controlled with the 'rightleftcmd' option. The default is
|
|
||||||
"search", which means that windows in which 'rightleft' is set will
|
|
||||||
edit search commands in right-left mode. To disable this behavior,
|
|
||||||
>
|
|
||||||
:set rightleftcmd=
|
|
||||||
<
|
|
||||||
To enable right-left editing of search commands again,
|
|
||||||
>
|
|
||||||
:set rightleftcmd&
|
|
||||||
<
|
|
||||||
+ Arabic Shaping Mode
|
|
||||||
|
|
||||||
To activate the required visual characters alterations (shaping,
|
|
||||||
composing, combining) which the Arabic language requires, enable
|
|
||||||
the 'arabicshape' command. This is done by entering
|
|
||||||
>
|
|
||||||
:set arabicshape
|
|
||||||
<
|
|
||||||
in our VIM window. You can also append the 'arabicshape' set
|
|
||||||
command to your .vimrc file. In other words, you can include
|
|
||||||
':set arabicshape' to your .vimrc file.
|
|
||||||
|
|
||||||
|
|
||||||
Keymap/Keyboard *arabickeymap*
|
|
||||||
---------------
|
|
||||||
|
|
||||||
The character/letter encoding used in VIM is the standard UTF-8.
|
|
||||||
It is widely discouraged that any other encoding be used or even
|
|
||||||
attempted.
|
|
||||||
|
|
||||||
Note: UTF-8 is an all encompassing encoding and as such is
|
|
||||||
the only supported (and encouraged) encoding with
|
|
||||||
regard to Arabic (all other proprietary encodings
|
|
||||||
should be discouraged and frowned upon).
|
|
||||||
|
|
||||||
o Keyboard
|
|
||||||
|
|
||||||
+ CTRL-^ in insert/replace mode toggles between Arabic/Latin mode
|
|
||||||
|
|
||||||
+ Keyboard mapping is based on the Microsoft's Arabic keymap (the
|
|
||||||
defacto standard in the Arab world):
|
|
||||||
|
|
||||||
+---------------------------------------------------------------------+
|
|
||||||
|! |@ |# |$ |% |^ |& |* |( |) |_ |+ || |~ ّ |
|
|
||||||
|1 ١ |2 ٢ |3 ٣ |4 ٤ |5 ٥ |6 ٦ |7 ٧ |8 ٨ |9 ٩ |0 ٠ |- |= |\ |` ذ |
|
|
||||||
+---------------------------------------------------------------------+
|
|
||||||
|Q َ |W ً |E ُ |R ٌ |T لإ |Y إ |U ` |I ÷ |O x |P ؛ |{ < |} > |
|
|
||||||
|q ض |w ص |e ث |r ق |t ف |y غ |u ع |i ه |o خ |p ح |[ ج |] د |
|
|
||||||
+-----------------------------------------------------------+
|
|
||||||
|A ِ |S ٍ |D [ |F ] |G لأ |H أ |J ـ |K ، |L / |: |" |
|
|
||||||
|a ش |s س |d ي |f ب |g ل |h ا |j ت |k ن |l م |; ك |' ط |
|
|
||||||
+------------------------------------------------------+
|
|
||||||
|Z ~ |X ْ |C { |V } |B لآ |N آ |M ' |< , |> . |? ؟ |
|
|
||||||
|z ئ |x ء |c ؤ |v ر |b لا |n ى |m ة |, و |. ز |/ ظ |
|
|
||||||
+-------------------------------------------------+
|
|
||||||
|
|
||||||
Restrictions
|
|
||||||
------------
|
|
||||||
|
|
||||||
o VIM in its GUI form does not currently support Bi-directionality
|
|
||||||
(ie. the ability to see both Arabic and Latin intermixed within
|
|
||||||
the same line).
|
|
||||||
|
|
||||||
|
|
||||||
Known Bugs
|
|
||||||
----------
|
|
||||||
|
|
||||||
There is one known minor bug,
|
|
||||||
|
|
||||||
1. If you insert a haraka (eg. Fatha (U+064E)) after a LAM (U+0644)
|
|
||||||
and then insert an ALEF (U+0627), the appropriate combining will
|
|
||||||
not happen due to the sandwiched haraka resulting in something
|
|
||||||
that will NOT be displayed correctly.
|
|
||||||
|
|
||||||
WORK-AROUND: Don't include harakats between LAM and ALEF combos.
|
|
||||||
In general, don't anticipate to see correct visual
|
|
||||||
representation with regard to harakats and LAM+ALEF
|
|
||||||
combined characters (even those entered after both
|
|
||||||
characters). The problem noted is strictly a visual
|
|
||||||
one, meaning saving such a file will contain all the
|
|
||||||
appropriate info/encodings - nothing is lost.
|
|
||||||
|
|
||||||
No other bugs are known to exist.
|
|
||||||
|
|
||||||
vim:tw=78:ts=8:ft=help:norl:
|
|
||||||
|
|
||||||
@@ -1,904 +0,0 @@
|
|||||||
*autocmd.txt* For Vim version 6.3. Last change: 2004 Apr 20
|
|
||||||
|
|
||||||
|
|
||||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
|
||||||
|
|
||||||
|
|
||||||
Automatic commands *autocommand*
|
|
||||||
|
|
||||||
For a basic explanation, see section |40.3| in the user manual.
|
|
||||||
|
|
||||||
1. Introduction |autocmd-intro|
|
|
||||||
2. Defining autocommands |autocmd-define|
|
|
||||||
3. Removing autocommands |autocmd-remove|
|
|
||||||
4. Listing autocommands |autocmd-list|
|
|
||||||
5. Events |autocmd-events|
|
|
||||||
6. Patterns |autocmd-patterns|
|
|
||||||
7. Groups |autocmd-groups|
|
|
||||||
8. Executing autocommands |autocmd-execute|
|
|
||||||
9. Using autocommands |autocmd-use|
|
|
||||||
|
|
||||||
{Vi does not have any of these commands}
|
|
||||||
{only when the |+autocmd| feature has not been disabled at compile time}
|
|
||||||
|
|
||||||
==============================================================================
|
|
||||||
1. Introduction *autocmd-intro*
|
|
||||||
|
|
||||||
You can specify commands to be executed automatically for when reading or
|
|
||||||
writing a file, when entering or leaving a buffer or window, and when exiting
|
|
||||||
Vim. For example, you can create an autocommand to set the 'cindent' option
|
|
||||||
for files matching *.c. You can also use autocommands to implement advanced
|
|
||||||
features, such as editing compressed files (see |gzip-example|). The usual
|
|
||||||
place to put autocommands is in your .vimrc or .exrc file.
|
|
||||||
|
|
||||||
*E203* *E204* *E143*
|
|
||||||
WARNING: Using autocommands is very powerful, and may lead to unexpected side
|
|
||||||
effects. Be careful not to destroy your text.
|
|
||||||
- It's a good idea to do some testing on an expendable copy of a file first.
|
|
||||||
For example: If you use autocommands to decompress a file when starting to
|
|
||||||
edit it, make sure that the autocommands for compressing when writing work
|
|
||||||
correctly.
|
|
||||||
- Be prepared for an error halfway through (e.g., disk full). Vim will mostly
|
|
||||||
be able to undo the changes to the buffer, but you may have to clean up the
|
|
||||||
changes to other files by hand (e.g., compress a file that has been
|
|
||||||
decompressed).
|
|
||||||
- If the BufRead* events allow you to edit a compressed file, the FileRead*
|
|
||||||
events should do the same (this makes recovery possible in some rare cases).
|
|
||||||
It's a good idea to use the same autocommands for the File* and Buf* events
|
|
||||||
when possible.
|
|
||||||
|
|
||||||
==============================================================================
|
|
||||||
2. Defining autocommands *autocmd-define*
|
|
||||||
|
|
||||||
Note: The ":autocmd" command cannot be followed by another command, since any
|
|
||||||
'|' is considered part of the command.
|
|
||||||
|
|
||||||
*:au* *:autocmd*
|
|
||||||
:au[tocmd] [group] {event} {pat} [nested] {cmd}
|
|
||||||
Add {cmd} to the list of commands that Vim will
|
|
||||||
execute automatically on {event} for a file matching
|
|
||||||
{pat}. Vim always adds the {cmd} after existing
|
|
||||||
autocommands, so that the autocommands execute in the
|
|
||||||
order in which they were given. See |autocmd-nested|
|
|
||||||
for [nested].
|
|
||||||
|
|
||||||
Note that special characters (e.g., "%", "<cword>") in the ":autocmd"
|
|
||||||
arguments are not expanded when the autocommand is defined. These will be
|
|
||||||
expanded when the Event is recognized, and the {cmd} is executed. The only
|
|
||||||
exception is that "<sfile>" is expanded when the autocmd is defined. Example:
|
|
||||||
>
|
|
||||||
:au BufNewFile,BufRead *.html so <sfile>:h/html.vim
|
|
||||||
|
|
||||||
Here Vim expands <sfile> to the name of the file containing this line.
|
|
||||||
|
|
||||||
When your .vimrc file is sourced twice, the autocommands will appear twice.
|
|
||||||
To avoid this, put this command in your .vimrc file, before defining
|
|
||||||
autocommands: >
|
|
||||||
|
|
||||||
:autocmd! " Remove ALL autocommands for the current group.
|
|
||||||
|
|
||||||
If you don't want to remove all autocommands, you can instead use a variable
|
|
||||||
to ensure that Vim includes the autocommands only once: >
|
|
||||||
|
|
||||||
:if !exists("autocommands_loaded")
|
|
||||||
: let autocommands_loaded = 1
|
|
||||||
: au ...
|
|
||||||
:endif
|
|
||||||
|
|
||||||
When the [group] argument is not given, Vim uses the current group (as defined
|
|
||||||
with ":augroup"); otherwise, Vim uses the group defined with [group]. Note
|
|
||||||
that [group] must have been defined before. You cannot define a new group
|
|
||||||
with ":au group ..."; use ":augroup" for that.
|
|
||||||
|
|
||||||
While testing autocommands, you might find the 'verbose' option to be useful: >
|
|
||||||
:set verbose=9
|
|
||||||
This setting makes Vim echo the autocommands as it executes them.
|
|
||||||
|
|
||||||
When defining an autocommand in a script, it will be able to call functions
|
|
||||||
local to the script and use mappings local to the script. When the event is
|
|
||||||
triggered and the command executed, it will run in the context of the script
|
|
||||||
it was defined in. This matters if |<SID>| is used in a command.
|
|
||||||
|
|
||||||
When executing the commands, the messages from one command overwrites a
|
|
||||||
previous message. This is different from when executing the commands
|
|
||||||
manually. Mostly the screen will not scroll up, thus there is no hit-enter
|
|
||||||
prompt. When one command outputs two messages this can happen anyway.
|
|
||||||
|
|
||||||
==============================================================================
|
|
||||||
3. Removing autocommands *autocmd-remove*
|
|
||||||
|
|
||||||
:au[tocmd]! [group] {event} {pat} [nested] {cmd}
|
|
||||||
Remove all autocommands associated with {event} and
|
|
||||||
{pat}, and add the command {cmd}. See
|
|
||||||
|autocmd-nested| for [nested].
|
|
||||||
|
|
||||||
:au[tocmd]! [group] {event} {pat}
|
|
||||||
Remove all autocommands associated with {event} and
|
|
||||||
{pat}.
|
|
||||||
|
|
||||||
:au[tocmd]! [group] * {pat}
|
|
||||||
Remove all autocommands associated with {pat} for all
|
|
||||||
events.
|
|
||||||
|
|
||||||
:au[tocmd]! [group] {event}
|
|
||||||
Remove ALL autocommands for {event}.
|
|
||||||
|
|
||||||
:au[tocmd]! [group] Remove ALL autocommands.
|
|
||||||
|
|
||||||
When the [group] argument is not given, Vim uses the current group (as defined
|
|
||||||
with ":augroup"); otherwise, Vim uses the group defined with [group].
|
|
||||||
|
|
||||||
==============================================================================
|
|
||||||
4. Listing autocommands *autocmd-list*
|
|
||||||
|
|
||||||
:au[tocmd] [group] {event} {pat}
|
|
||||||
Show the autocommands associated with {event} and
|
|
||||||
{pat}.
|
|
||||||
|
|
||||||
:au[tocmd] [group] * {pat}
|
|
||||||
Show the autocommands associated with {pat} for all
|
|
||||||
events.
|
|
||||||
|
|
||||||
:au[tocmd] [group] {event}
|
|
||||||
Show all autocommands for {event}.
|
|
||||||
|
|
||||||
:au[tocmd] [group] Show all autocommands.
|
|
||||||
|
|
||||||
If you provide the [group] argument, Vim lists only the autocommands for
|
|
||||||
[group]; otherwise, Vim lists the autocommands for ALL groups. Note that this
|
|
||||||
argument behavior differs from that for defining and removing autocommands.
|
|
||||||
|
|
||||||
==============================================================================
|
|
||||||
5. Events *autocmd-events* *E215* *E216*
|
|
||||||
|
|
||||||
*autocommand-events* *{event}*
|
|
||||||
Vim recognizes the following events. Vim ignores the case of event names
|
|
||||||
(e.g., you can use "BUFread" or "bufread" instead of "BufRead").
|
|
||||||
|
|
||||||
*BufNewFile*
|
|
||||||
BufNewFile When starting to edit a file that doesn't
|
|
||||||
exist. Can be used to read in a skeleton
|
|
||||||
file.
|
|
||||||
*BufReadPre* *E200* *E201*
|
|
||||||
BufReadPre When starting to edit a new buffer, before
|
|
||||||
reading the file into the buffer. Not used
|
|
||||||
if the file doesn't exist.
|
|
||||||
*BufRead* *BufReadPost*
|
|
||||||
BufRead or BufReadPost When starting to edit a new buffer, after
|
|
||||||
reading the file into the buffer, before
|
|
||||||
executing the modelines. See |BufWinEnter|
|
|
||||||
for when you need to do something after
|
|
||||||
processing the modelines.
|
|
||||||
This does NOT work for ":r file". Not used
|
|
||||||
when the file doesn't exist. Also used after
|
|
||||||
successfully recovering a file.
|
|
||||||
*BufReadCmd*
|
|
||||||
BufReadCmd Before starting to edit a new buffer. Should
|
|
||||||
read the file into the buffer. |Cmd-event|
|
|
||||||
*BufFilePre*
|
|
||||||
BufFilePre Before changing the name of the current buffer
|
|
||||||
with the ":file" or ":saveas" command.
|
|
||||||
*BufFilePost*
|
|
||||||
BufFilePost After changing the name of the current buffer
|
|
||||||
with the ":file" or ":saveas" command.
|
|
||||||
*FileReadPre*
|
|
||||||
FileReadPre Before reading a file with a ":read" command.
|
|
||||||
*FileReadPost*
|
|
||||||
FileReadPost After reading a file with a ":read" command.
|
|
||||||
Note that Vim sets the '[ and '] marks to the
|
|
||||||
first and last line of the read. This can be
|
|
||||||
used to operate on the lines just read.
|
|
||||||
*FileReadCmd*
|
|
||||||
FileReadCmd Before reading a file with a ":read" command.
|
|
||||||
Should do the reading of the file. |Cmd-event|
|
|
||||||
*FilterReadPre* *E135*
|
|
||||||
FilterReadPre Before reading a file from a filter command.
|
|
||||||
Vim checks the pattern against the name of
|
|
||||||
the current buffer, not the name of the
|
|
||||||
temporary file that is the output of the
|
|
||||||
filter command.
|
|
||||||
*FilterReadPost*
|
|
||||||
FilterReadPost After reading a file from a filter command.
|
|
||||||
Vim checks the pattern against the name of
|
|
||||||
the current buffer as with FilterReadPre.
|
|
||||||
*FileType*
|
|
||||||
FileType When the 'filetype' option has been set.
|
|
||||||
<afile> can be used for the name of the file
|
|
||||||
where this option was set, and <amatch> for
|
|
||||||
the new value of 'filetype'.
|
|
||||||
See |filetypes|.
|
|
||||||
*Syntax*
|
|
||||||
Syntax When the 'syntax' option has been set.
|
|
||||||
<afile> can be used for the name of the file
|
|
||||||
where this option was set, and <amatch> for
|
|
||||||
the new value of 'syntax'.
|
|
||||||
See |:syn-on|.
|
|
||||||
*StdinReadPre*
|
|
||||||
StdinReadPre Before reading from stdin into the buffer.
|
|
||||||
Only used when the "-" argument was used when
|
|
||||||
Vim was started |--|.
|
|
||||||
*StdinReadPost*
|
|
||||||
StdinReadPost After reading from the stdin into the buffer,
|
|
||||||
before executing the modelines. Only used
|
|
||||||
when the "-" argument was used when Vim was
|
|
||||||
started |--|.
|
|
||||||
*BufWrite* *BufWritePre*
|
|
||||||
BufWrite or BufWritePre Before writing the whole buffer to a file.
|
|
||||||
*BufWritePost*
|
|
||||||
BufWritePost After writing the whole buffer to a file
|
|
||||||
(should undo the commands for BufWritePre).
|
|
||||||
*BufWriteCmd*
|
|
||||||
BufWriteCmd Before writing the whole buffer to a file.
|
|
||||||
Should do the writing of the file and reset
|
|
||||||
'modified' if successful. The buffer contents
|
|
||||||
should not be changed. |Cmd-event|
|
|
||||||
*FileWritePre*
|
|
||||||
FileWritePre Before writing to a file, when not writing the
|
|
||||||
whole buffer.
|
|
||||||
*FileWritePost*
|
|
||||||
FileWritePost After writing to a file, when not writing the
|
|
||||||
whole buffer.
|
|
||||||
*FileWriteCmd*
|
|
||||||
FileWriteCmd Before writing to a file, when not writing the
|
|
||||||
whole buffer. Should do the writing to the
|
|
||||||
file. Should not change the buffer.
|
|
||||||
|Cmd-event|
|
|
||||||
*FileAppendPre*
|
|
||||||
FileAppendPre Before appending to a file.
|
|
||||||
*FileAppendPost*
|
|
||||||
FileAppendPost After appending to a file.
|
|
||||||
*FileAppendCmd*
|
|
||||||
FileAppendCmd Before appending to a file. Should do the
|
|
||||||
appending to the file. |Cmd-event|
|
|
||||||
*FilterWritePre*
|
|
||||||
FilterWritePre Before writing a file for a filter command or
|
|
||||||
making a diff.
|
|
||||||
Vim checks the pattern against the name of
|
|
||||||
the current buffer, not the name of the
|
|
||||||
temporary file that is the output of the
|
|
||||||
filter command.
|
|
||||||
*FilterWritePost*
|
|
||||||
FilterWritePost After writing a file for a filter command or
|
|
||||||
making a diff.
|
|
||||||
Vim checks the pattern against the name of
|
|
||||||
the current buffer as with FilterWritePre.
|
|
||||||
*FileChangedShell*
|
|
||||||
FileChangedShell When Vim notices that the modification time of
|
|
||||||
a file has changed since editing started.
|
|
||||||
Also when the file attributes of the file
|
|
||||||
change. |timestamp|
|
|
||||||
Mostly triggered after executing a shell
|
|
||||||
command, but also with a |:checktime| command
|
|
||||||
or when Vim regains input focus.
|
|
||||||
This autocommand is triggered for each changed
|
|
||||||
file. It is not used when 'autoread' is set
|
|
||||||
and the buffer was not changed. If a
|
|
||||||
FileChangedShell autocommand is present the
|
|
||||||
warning message and prompt is not given.
|
|
||||||
This is useful for reloading related buffers
|
|
||||||
which are affected by a single command.
|
|
||||||
NOTE: When this autocommand is executed, the
|
|
||||||
current buffer "%" may be different from the
|
|
||||||
buffer that was changed "<afile>".
|
|
||||||
NOTE: The commands must not change the current
|
|
||||||
buffer, jump to another buffer or delete a
|
|
||||||
buffer. *E246*
|
|
||||||
NOTE: This event never nests, to avoid an
|
|
||||||
endless loop. This means that while executing
|
|
||||||
commands for the FileChangedShell event no
|
|
||||||
other FileChangedShell event will be
|
|
||||||
triggered.
|
|
||||||
*FileChangedRO*
|
|
||||||
FileChangedRO Before making the first change to a read-only
|
|
||||||
file. Can be used to check-out the file from
|
|
||||||
a source control system. Not triggered when
|
|
||||||
the change was caused by an autocommand.
|
|
||||||
WARNING: This event is triggered when making a
|
|
||||||
change, just before the change is applied to
|
|
||||||
the text. If the autocommand moves the cursor
|
|
||||||
the effect of the change is undefined.
|
|
||||||
*FocusGained*
|
|
||||||
FocusGained When Vim got input focus. Only for the GUI
|
|
||||||
version and a few console versions where this
|
|
||||||
can be detected.
|
|
||||||
*FocusLost*
|
|
||||||
FocusLost When Vim lost input focus. Only for the GUI
|
|
||||||
version and a few console versions where this
|
|
||||||
can be detected.
|
|
||||||
*FuncUndefined*
|
|
||||||
FuncUndefined When a user function is used but it isn't
|
|
||||||
defined. Useful for defining a function only
|
|
||||||
when it's used. Both <amatch> and <afile> are
|
|
||||||
set to the name of the function.
|
|
||||||
*CursorHold*
|
|
||||||
CursorHold When the user doesn't press a key for the time
|
|
||||||
specified with 'updatetime'. Not re-triggered
|
|
||||||
until the user has pressed a key (i.e. doesn't
|
|
||||||
fire every 'updatetime' ms if you leave Vim to
|
|
||||||
make some coffee. :) See |CursorHold-example|
|
|
||||||
for previewing tags.
|
|
||||||
This event is only triggered in Normal mode.
|
|
||||||
Note: Interactive commands cannot be used for
|
|
||||||
this event. There is no hit-enter prompt,
|
|
||||||
the screen is updated directly (when needed).
|
|
||||||
Note: In the future there will probably be
|
|
||||||
another option to set the time.
|
|
||||||
Hint: to force an update of the status lines
|
|
||||||
use: >
|
|
||||||
:let &ro = &ro
|
|
||||||
< {only on Amiga, Unix, Win32, MSDOS and all GUI
|
|
||||||
versions}
|
|
||||||
*BufEnter*
|
|
||||||
BufEnter After entering a buffer. Useful for setting
|
|
||||||
options for a file type. Also executed when
|
|
||||||
starting to edit a buffer, after the
|
|
||||||
BufReadPost autocommands.
|
|
||||||
*BufLeave*
|
|
||||||
BufLeave Before leaving to another buffer. Also when
|
|
||||||
leaving or closing the current window and the
|
|
||||||
new current window is not for the same buffer.
|
|
||||||
Not used for ":qa" or ":q" when exiting Vim.
|
|
||||||
*BufWinEnter*
|
|
||||||
BufWinEnter After a buffer is displayed in a window. This
|
|
||||||
can be when the buffer is loaded (after
|
|
||||||
processing the modelines), when a hidden
|
|
||||||
buffer is displayed in a window (and is no
|
|
||||||
longer hidden) or a buffer already visible in
|
|
||||||
a window is also displayed in another window.
|
|
||||||
*BufWinLeave*
|
|
||||||
BufWinLeave Before a buffer is removed from a window.
|
|
||||||
Not when it's still visible in another window.
|
|
||||||
Also triggered when exiting. It's triggered
|
|
||||||
before BufUnload or BufHidden.
|
|
||||||
NOTE: When this autocommand is executed, the
|
|
||||||
current buffer "%" may be different from the
|
|
||||||
buffer being unloaded "<afile>".
|
|
||||||
*BufUnload*
|
|
||||||
BufUnload Before unloading a buffer. This is when the
|
|
||||||
text in the buffer is going to be freed. This
|
|
||||||
may be after a BufWritePost and before a
|
|
||||||
BufDelete. Also used for all buffers that are
|
|
||||||
loaded when Vim is going to exit.
|
|
||||||
NOTE: When this autocommand is executed, the
|
|
||||||
current buffer "%" may be different from the
|
|
||||||
buffer being unloaded "<afile>".
|
|
||||||
*BufHidden*
|
|
||||||
BufHidden Just after a buffer has become hidden. That
|
|
||||||
is, when there are no longer windows that show
|
|
||||||
the buffer, but the buffer is not unloaded or
|
|
||||||
deleted. Not used for ":qa" or ":q" when
|
|
||||||
exiting Vim.
|
|
||||||
NOTE: When this autocommand is executed, the
|
|
||||||
current buffer "%" may be different from the
|
|
||||||
buffer being unloaded "<afile>".
|
|
||||||
*BufNew*
|
|
||||||
BufNew Just after creating a new buffer. Also used
|
|
||||||
just after a buffer has been renamed. When
|
|
||||||
the buffer is added to the buffer list BufAdd
|
|
||||||
will be triggered too.
|
|
||||||
NOTE: When this autocommand is executed, the
|
|
||||||
current buffer "%" may be different from the
|
|
||||||
buffer being created "<afile>".
|
|
||||||
*BufCreate* *BufAdd*
|
|
||||||
BufAdd or BufCreate Just after creating a new buffer which is
|
|
||||||
added to the buffer list, or adding a buffer
|
|
||||||
to the buffer list.
|
|
||||||
Also used just after a buffer in the buffer
|
|
||||||
list has been renamed.
|
|
||||||
The BufCreate event is for historic reasons.
|
|
||||||
NOTE: When this autocommand is executed, the
|
|
||||||
current buffer "%" may be different from the
|
|
||||||
buffer being created "<afile>".
|
|
||||||
*BufDelete*
|
|
||||||
BufDelete Before deleting a buffer from the buffer list.
|
|
||||||
The BufUnload may be called first (if the
|
|
||||||
buffer was loaded).
|
|
||||||
Also used just before a buffer in the buffer
|
|
||||||
list is renamed.
|
|
||||||
NOTE: When this autocommand is executed, the
|
|
||||||
current buffer "%" may be different from the
|
|
||||||
buffer being deleted "<afile>".
|
|
||||||
*BufWipeout*
|
|
||||||
BufWipeout Before completely deleting a buffer. The
|
|
||||||
BufUnload and BufDelete events may be called
|
|
||||||
first (if the buffer was loaded and was in the
|
|
||||||
buffer list). Also used just before a buffer
|
|
||||||
is renamed (also when it's not in the buffer
|
|
||||||
list).
|
|
||||||
NOTE: When this autocommand is executed, the
|
|
||||||
current buffer "%" may be different from the
|
|
||||||
buffer being deleted "<afile>".
|
|
||||||
*WinEnter*
|
|
||||||
WinEnter After entering another window. Not done for
|
|
||||||
the first window, when Vim has just started.
|
|
||||||
Useful for setting the window height.
|
|
||||||
If the window is for another buffer, Vim
|
|
||||||
executes the BufEnter autocommands after the
|
|
||||||
WinEnter autocommands.
|
|
||||||
Note: When using ":split fname" the WinEnter
|
|
||||||
event is triggered after the split but before
|
|
||||||
the file "fname" is loaded.
|
|
||||||
*WinLeave*
|
|
||||||
WinLeave Before leaving a window. If the window to be
|
|
||||||
entered next is for a different buffer, Vim
|
|
||||||
executes the BufLeave autocommands before the
|
|
||||||
WinLeave autocommands (but not for ":new").
|
|
||||||
Not used for ":qa" or ":q" when exiting Vim.
|
|
||||||
*CmdwinEnter*
|
|
||||||
CmdwinEnter After entering the command-line window.
|
|
||||||
Useful for setting options specifically for
|
|
||||||
this special type of window. This is
|
|
||||||
triggered _instead_ of BufEnter and WinEnter.
|
|
||||||
<afile> is set to a single character,
|
|
||||||
indicating the type of command-line.
|
|
||||||
|cmdwin-char|
|
|
||||||
*CmdwinLeave*
|
|
||||||
CmdwinLeave Before leaving the command-line window.
|
|
||||||
Useful to clean up any global setting done
|
|
||||||
with CmdwinEnter. This is triggered _instead_
|
|
||||||
of BufLeave and WinLeave.
|
|
||||||
<afile> is set to a single character,
|
|
||||||
indicating the type of command-line.
|
|
||||||
|cmdwin-char|
|
|
||||||
*GUIEnter*
|
|
||||||
GUIEnter After starting the GUI successfully, and after
|
|
||||||
opening the window. It is triggered before
|
|
||||||
VimEnter when using gvim. Can be used to
|
|
||||||
position the window from a .gvimrc file: >
|
|
||||||
:autocmd GUIEnter * winpos 100 50
|
|
||||||
< *VimEnter*
|
|
||||||
VimEnter After doing all the startup stuff, including
|
|
||||||
loading .vimrc files, executing the "-c cmd"
|
|
||||||
arguments, creating all windows and loading
|
|
||||||
the buffers in them.
|
|
||||||
*VimLeavePre*
|
|
||||||
VimLeavePre Before exiting Vim, just before writing the
|
|
||||||
.viminfo file. This is executed only once,
|
|
||||||
if there is a match with the name of what
|
|
||||||
happens to be the current buffer when exiting.
|
|
||||||
Mostly useful with a "*" pattern. >
|
|
||||||
:autocmd VimLeavePre * call CleanupStuff()
|
|
||||||
< To detect an abnormal exit use |v:dying|.
|
|
||||||
*VimLeave*
|
|
||||||
VimLeave Before exiting Vim, just after writing the
|
|
||||||
.viminfo file. Executed only once, like
|
|
||||||
VimLeavePre.
|
|
||||||
To detect an abnormal exit use |v:dying|.
|
|
||||||
*EncodingChanged*
|
|
||||||
EncodingChanged Fires off when the 'encoding' option is
|
|
||||||
changed. Useful to set up fonts, for example.
|
|
||||||
*FileEncoding*
|
|
||||||
FileEncoding Obsolete. It still works and is equivalent
|
|
||||||
to |EncodingChanged|.
|
|
||||||
*RemoteReply*
|
|
||||||
RemoteReply When a reply from a Vim that functions as
|
|
||||||
server was received |server2client()|.
|
|
||||||
<amatch> is equal to the {serverid} from which
|
|
||||||
the reply was sent, and <afile> is the actual
|
|
||||||
reply string.
|
|
||||||
Note that even if an autocommand is defined,
|
|
||||||
the reply should be read with |remote_read()|
|
|
||||||
to consume it.
|
|
||||||
*TermChanged*
|
|
||||||
TermChanged After the value of 'term' has changed. Useful
|
|
||||||
for re-loading the syntax file to update the
|
|
||||||
colors, fonts and other terminal-dependent
|
|
||||||
settings. Executed for all loaded buffers.
|
|
||||||
*TermResponse*
|
|
||||||
TermResponse After the response to |t_RV| is received from
|
|
||||||
the terminal. The value of |v:termresponse|
|
|
||||||
can be used to do things depending on the
|
|
||||||
terminal version.
|
|
||||||
*UserGettingBored*
|
|
||||||
UserGettingBored When the user hits CTRL-C. Just kidding! :-)
|
|
||||||
*User*
|
|
||||||
User Never executed automatically. To be used for
|
|
||||||
autocommands that are only executed with
|
|
||||||
":doautocmd".
|
|
||||||
|
|
||||||
You can specify a comma-separated list of event names. No white space can be
|
|
||||||
used in this list. The command applies to all the events in the list.
|
|
||||||
|
|
||||||
For READING FILES there are four kinds of events possible:
|
|
||||||
BufNewFile starting to edit a non-existent file
|
|
||||||
BufReadPre BufReadPost starting to edit an existing file
|
|
||||||
FilterReadPre FilterReadPost read the temp file with filter output
|
|
||||||
FileReadPre FileReadPost any other file read
|
|
||||||
Vim uses only one of these four kinds when reading a file. The "Pre" and
|
|
||||||
"Post" events are both triggered, before and after reading the file.
|
|
||||||
|
|
||||||
Note that the autocommands for the *ReadPre events and all the Filter events
|
|
||||||
are not allowed to change the current buffer (you will get an error message if
|
|
||||||
this happens). This is to prevent the file to be read into the wrong buffer.
|
|
||||||
|
|
||||||
Note that the 'modified' flag is reset AFTER executing the BufReadPost
|
|
||||||
and BufNewFile autocommands. But when the 'modified' option was set by the
|
|
||||||
autocommands, this doesn't happen.
|
|
||||||
|
|
||||||
You can use the 'eventignore' option to ignore a number of events or all
|
|
||||||
events.
|
|
||||||
|
|
||||||
==============================================================================
|
|
||||||
6. Patterns *autocmd-patterns* *{pat}*
|
|
||||||
|
|
||||||
The file pattern {pat} is tested for a match against the file name in one of
|
|
||||||
two ways:
|
|
||||||
1. When there is no '/' in the pattern, Vim checks for a match against only
|
|
||||||
the tail part of the file name (without its leading directory path).
|
|
||||||
2. When there is a '/' in the pattern, Vim checks for a match against the
|
|
||||||
both short file name (as you typed it) and the full file name (after
|
|
||||||
expanding it to a full path and resolving symbolic links).
|
|
||||||
|
|
||||||
Examples: >
|
|
||||||
:autocmd BufRead *.txt set et
|
|
||||||
Set the 'et' option for all text files. >
|
|
||||||
|
|
||||||
:autocmd BufRead /vim/src/*.c set cindent
|
|
||||||
Set the 'cindent' option for C files in the /vim/src directory. >
|
|
||||||
|
|
||||||
:autocmd BufRead /tmp/*.c set ts=5
|
|
||||||
If you have a link from "/tmp/test.c" to "/home/nobody/vim/src/test.c", and
|
|
||||||
you start editing "/tmp/test.c", this autocommand will match.
|
|
||||||
|
|
||||||
Note: To match part of a path, but not from the root directory, use a '*' as
|
|
||||||
the first character. Example: >
|
|
||||||
:autocmd BufRead */doc/*.txt set tw=78
|
|
||||||
This autocommand will for example be executed for "/tmp/doc/xx.txt" and
|
|
||||||
"/usr/home/piet/doc/yy.txt". The number of directories does not matter here.
|
|
||||||
|
|
||||||
|
|
||||||
The file name that the pattern is matched against is after expanding
|
|
||||||
wildcards. Thus is you issue this command: >
|
|
||||||
:e $ROOTDIR/main.$EXT
|
|
||||||
The argument is first expanded to: >
|
|
||||||
/usr/root/main.py
|
|
||||||
Before it's matched with the pattern of the autocommand. Careful with this
|
|
||||||
when using events like FileReadCmd, the value of <amatch> may not be what you
|
|
||||||
expect.
|
|
||||||
|
|
||||||
|
|
||||||
Environment variables can be used in a pattern: >
|
|
||||||
:autocmd BufRead $VIMRUNTIME/doc/*.txt set expandtab
|
|
||||||
And ~ can be used for the home directory (if $HOME is defined): >
|
|
||||||
:autocmd BufWritePost ~/.vimrc so ~/.vimrc
|
|
||||||
:autocmd BufRead ~archive/* set readonly
|
|
||||||
The environment variable is expanded when the autocommand is defined, not when
|
|
||||||
the autocommand is executed. This is different from the command!
|
|
||||||
|
|
||||||
*file-pattern*
|
|
||||||
The pattern is interpreted like mostly used in file names:
|
|
||||||
* matches any sequence of characters
|
|
||||||
? matches any single character
|
|
||||||
\? matches a '?'
|
|
||||||
. matches a '.'
|
|
||||||
~ matches a '~'
|
|
||||||
, separates patterns
|
|
||||||
\, matches a ','
|
|
||||||
{ } like \( \) in a |pattern|
|
|
||||||
, inside { }: like \| in a |pattern|
|
|
||||||
\ special meaning like in a |pattern|
|
|
||||||
[ch] matches 'c' or 'h'
|
|
||||||
[^ch] match any character but 'c' and 'h'
|
|
||||||
|
|
||||||
Note that for all systems the '/' character is used for path separator (even
|
|
||||||
MS-DOS and OS/2). This was done because the backslash is difficult to use
|
|
||||||
in a pattern and to make the autocommands portable across different systems.
|
|
||||||
|
|
||||||
|
|
||||||
Matching with the pattern is done when an event is triggered. Changing the
|
|
||||||
buffer name in one of the autocommands, or even deleting the buffer, does not
|
|
||||||
change which autocommands will be executed. Example: >
|
|
||||||
|
|
||||||
au BufEnter *.foo bdel
|
|
||||||
au BufEnter *.foo set modified
|
|
||||||
|
|
||||||
This will delete the current buffer and then set 'modified' in what has become
|
|
||||||
the current buffer instead. Vim doesn't take into account that "*.foo"
|
|
||||||
doesn't match with that buffer name. It matches "*.foo" with the name of the
|
|
||||||
buffer at the moment the event was triggered.
|
|
||||||
|
|
||||||
==============================================================================
|
|
||||||
7. Groups *autocmd-groups*
|
|
||||||
|
|
||||||
Autocommands can be put together in a group. This is useful for removing or
|
|
||||||
executing a group of autocommands. For example, all the autocommands for
|
|
||||||
syntax highlighting are put in the "highlight" group, to be able to execute
|
|
||||||
":doautoall highlight BufRead" when the GUI starts.
|
|
||||||
|
|
||||||
When no specific group is selected, Vim uses the default group. The default
|
|
||||||
group does not have a name. You cannot execute the autocommands from the
|
|
||||||
default group separately; you can execute them only by executing autocommands
|
|
||||||
for all groups.
|
|
||||||
|
|
||||||
Normally, when executing autocommands automatically, Vim uses the autocommands
|
|
||||||
for all groups. The group only matters when executing autocommands with
|
|
||||||
":doautocmd" or ":doautoall", or when defining or deleting autocommands.
|
|
||||||
|
|
||||||
The group name can contain any characters except white space. The group name
|
|
||||||
"end" is reserved (also in uppercase).
|
|
||||||
|
|
||||||
The group name is case sensitive. Note that this is different from the event
|
|
||||||
name!
|
|
||||||
|
|
||||||
*:aug* *:augroup*
|
|
||||||
:aug[roup] {name} Define the autocmd group name for the
|
|
||||||
following ":autocmd" commands. The name "end"
|
|
||||||
or "END" selects the default group.
|
|
||||||
|
|
||||||
*:augroup-delete* *E367*
|
|
||||||
:aug[roup]! {name} Delete the autocmd group {name}. Don't use
|
|
||||||
this if there is still an autocommand using
|
|
||||||
this group! This is not checked.
|
|
||||||
|
|
||||||
To enter autocommands for a specific group, use this method:
|
|
||||||
1. Select the group with ":augroup {name}".
|
|
||||||
2. Delete any old autocommands with ":au!".
|
|
||||||
3. Define the autocommands.
|
|
||||||
4. Go back to the default group with "augroup END".
|
|
||||||
|
|
||||||
Example: >
|
|
||||||
:augroup uncompress
|
|
||||||
: au!
|
|
||||||
: au BufEnter *.gz %!gunzip
|
|
||||||
:augroup END
|
|
||||||
|
|
||||||
This prevents having the autocommands defined twice (e.g., after sourcing the
|
|
||||||
.vimrc file again).
|
|
||||||
|
|
||||||
==============================================================================
|
|
||||||
8. Executing autocommands *autocmd-execute*
|
|
||||||
|
|
||||||
Vim can also execute Autocommands non-automatically. This is useful if you
|
|
||||||
have changed autocommands, or when Vim has executed the wrong autocommands
|
|
||||||
(e.g., the file pattern match was wrong).
|
|
||||||
|
|
||||||
Note that the 'eventignore' option applies here too. Events listed in this
|
|
||||||
option will not cause any commands to be executed.
|
|
||||||
|
|
||||||
*:do* *:doau* *:doautocmd* *E217*
|
|
||||||
:do[autocmd] [group] {event} [fname]
|
|
||||||
Apply the autocommands matching [fname] (default:
|
|
||||||
current file name) for {event} to the current buffer.
|
|
||||||
You can use this when the current file name does not
|
|
||||||
match the right pattern, after changing settings, or
|
|
||||||
to execute autocommands for a certain event.
|
|
||||||
It's possible to use this inside an autocommand too,
|
|
||||||
so you can base the autocommands for one extension on
|
|
||||||
another extension. Example: >
|
|
||||||
:au Bufenter *.cpp so ~/.vimrc_cpp
|
|
||||||
:au Bufenter *.cpp doau BufEnter x.c
|
|
||||||
< Be careful to avoid endless loops. See
|
|
||||||
|autocmd-nested|.
|
|
||||||
|
|
||||||
When the [group] argument is not given, Vim executes
|
|
||||||
the autocommands for all groups. When the [group]
|
|
||||||
argument is included, Vim executes only the matching
|
|
||||||
autocommands for that group. Note: if you use an
|
|
||||||
undefined group name, Vim gives you an error message.
|
|
||||||
|
|
||||||
*:doautoa* *:doautoall*
|
|
||||||
:doautoa[ll] [group] {event} [fname]
|
|
||||||
Like ":doautocmd", but apply the autocommands to each
|
|
||||||
loaded buffer. Note that {fname} is used to select
|
|
||||||
the autocommands, not the buffers to which they are
|
|
||||||
applied.
|
|
||||||
Careful: Don't use this for autocommands that delete a
|
|
||||||
buffer, change to another buffer or change the
|
|
||||||
contents of a buffer; the result is unpredictable.
|
|
||||||
This command is intended for autocommands that set
|
|
||||||
options, change highlighting, and things like that.
|
|
||||||
|
|
||||||
==============================================================================
|
|
||||||
9. Using autocommands *autocmd-use*
|
|
||||||
|
|
||||||
For WRITING FILES there are four possible sets of events. Vim uses only one
|
|
||||||
of these sets for a write command:
|
|
||||||
|
|
||||||
BufWriteCmd BufWritePre BufWritePost writing the whole buffer
|
|
||||||
FilterWritePre FilterWritePost writing to filter temp file
|
|
||||||
FileAppendCmd FileAppendPre FileAppendPost appending to a file
|
|
||||||
FileWriteCmd FileWritePre FileWritePost any other file write
|
|
||||||
|
|
||||||
When there is a matching "*Cmd" autocommand, it is assumed it will do the
|
|
||||||
writing. No further writing is done and the other events are not triggered.
|
|
||||||
|Cmd-event|
|
|
||||||
|
|
||||||
Note that the *WritePost commands should undo any changes to the buffer that
|
|
||||||
were caused by the *WritePre commands; otherwise, writing the file will have
|
|
||||||
the side effect of changing the buffer.
|
|
||||||
|
|
||||||
Before executing the autocommands, the buffer from which the lines are to be
|
|
||||||
written temporarily becomes the current buffer. Unless the autocommands
|
|
||||||
change the current buffer or delete the previously current buffer, the
|
|
||||||
previously current buffer is made the current buffer again.
|
|
||||||
|
|
||||||
The *WritePre and *AppendPre autocommands must not delete the buffer from
|
|
||||||
which the lines are to be written.
|
|
||||||
|
|
||||||
The '[ and '] marks have a special position:
|
|
||||||
- Before the *ReadPre event the '[ mark is set to the line just above where
|
|
||||||
the new lines will be inserted.
|
|
||||||
- Before the *ReadPost event the '[ mark is set to the first line that was
|
|
||||||
just read, the '] mark to the last line.
|
|
||||||
- Before executing the *WritePre and *AppendPre autocommands the '[ mark is
|
|
||||||
set to the first line that will be written, the '] mark to the last line.
|
|
||||||
Careful: '[ and '] change when using commands that change the buffer.
|
|
||||||
|
|
||||||
In commands which expect a file name, you can use "<afile>" for the file name
|
|
||||||
that is being read |:<afile>| (you can also use "%" for the current file
|
|
||||||
name). "<abuf>" can be used for the buffer number of the currently effective
|
|
||||||
buffer. This also works for buffers that doesn't have a name. But it doesn't
|
|
||||||
work for files without a buffer (e.g., with ":r file").
|
|
||||||
|
|
||||||
*gzip-example*
|
|
||||||
Examples for reading and writing compressed files: >
|
|
||||||
:augroup gzip
|
|
||||||
: autocmd!
|
|
||||||
: autocmd BufReadPre,FileReadPre *.gz set bin
|
|
||||||
: autocmd BufReadPost,FileReadPost *.gz '[,']!gunzip
|
|
||||||
: autocmd BufReadPost,FileReadPost *.gz set nobin
|
|
||||||
: autocmd BufReadPost,FileReadPost *.gz execute ":doautocmd BufReadPost " . expand("%:r")
|
|
||||||
: autocmd BufWritePost,FileWritePost *.gz !mv <afile> <afile>:r
|
|
||||||
: autocmd BufWritePost,FileWritePost *.gz !gzip <afile>:r
|
|
||||||
|
|
||||||
: autocmd FileAppendPre *.gz !gunzip <afile>
|
|
||||||
: autocmd FileAppendPre *.gz !mv <afile>:r <afile>
|
|
||||||
: autocmd FileAppendPost *.gz !mv <afile> <afile>:r
|
|
||||||
: autocmd FileAppendPost *.gz !gzip <afile>:r
|
|
||||||
:augroup END
|
|
||||||
|
|
||||||
The "gzip" group is used to be able to delete any existing autocommands with
|
|
||||||
":autocmd!", for when the file is sourced twice.
|
|
||||||
|
|
||||||
("<afile>:r" is the file name without the extension, see |:_%:|)
|
|
||||||
|
|
||||||
The commands executed for the BufNewFile, BufRead/BufReadPost, BufWritePost,
|
|
||||||
FileAppendPost and VimLeave events do not set or reset the changed flag of the
|
|
||||||
buffer. When you decompress the buffer with the BufReadPost autocommands, you
|
|
||||||
can still exit with ":q". When you use ":undo" in BufWritePost to undo the
|
|
||||||
changes made by BufWritePre commands, you can still do ":q" (this also makes
|
|
||||||
"ZZ" work). If you do want the buffer to be marked as modified, set the
|
|
||||||
'modified' option.
|
|
||||||
|
|
||||||
To execute Normal mode commands from an autocommand, use the ":normal"
|
|
||||||
command. Use with care! If the Normal mode command is not finished, the user
|
|
||||||
needs to type characters (e.g., after ":normal m" you need to type a mark
|
|
||||||
name).
|
|
||||||
|
|
||||||
If you want the buffer to be unmodified after changing it, reset the
|
|
||||||
'modified' option. This makes it possible to exit the buffer with ":q"
|
|
||||||
instead of ":q!".
|
|
||||||
|
|
||||||
*autocmd-nested* *E218*
|
|
||||||
By default, autocommands do not nest. If you use ":e" or ":w" in an
|
|
||||||
autocommand, Vim does not execute the BufRead and BufWrite autocommands for
|
|
||||||
those commands. If you do want this, use the "nested" flag for those commands
|
|
||||||
in which you want nesting. For example: >
|
|
||||||
:autocmd FileChangedShell *.c nested e!
|
|
||||||
The nesting is limited to 10 levels to get out of recursive loops.
|
|
||||||
|
|
||||||
It's possible to use the ":au" command in an autocommand. This can be a
|
|
||||||
self-modifying command! This can be useful for an autocommand that should
|
|
||||||
execute only once.
|
|
||||||
|
|
||||||
There is currently no way to disable the autocommands. If you want to write a
|
|
||||||
file without executing the autocommands for that type of file, write it under
|
|
||||||
another name and rename it with a shell command. In some situations you can
|
|
||||||
use the 'eventignore' option.
|
|
||||||
|
|
||||||
Note: When reading a file (with ":read file" or with a filter command) and the
|
|
||||||
last line in the file does not have an <EOL>, Vim remembers this. At the next
|
|
||||||
write (with ":write file" or with a filter command), if the same line is
|
|
||||||
written again as the last line in a file AND 'binary' is set, Vim does not
|
|
||||||
supply an <EOL>. This makes a filter command on the just read lines write the
|
|
||||||
same file as was read, and makes a write command on just filtered lines write
|
|
||||||
the same file as was read from the filter. For example, another way to write
|
|
||||||
a compressed file: >
|
|
||||||
|
|
||||||
:autocmd FileWritePre *.gz set bin|'[,']!gzip
|
|
||||||
:autocmd FileWritePost *.gz undo|set nobin
|
|
||||||
<
|
|
||||||
*autocommand-pattern*
|
|
||||||
You can specify multiple patterns, separated by commas. Here are some
|
|
||||||
examples: >
|
|
||||||
|
|
||||||
:autocmd BufRead * set tw=79 nocin ic infercase fo=2croq
|
|
||||||
:autocmd BufRead .letter set tw=72 fo=2tcrq
|
|
||||||
:autocmd BufEnter .letter set dict=/usr/lib/dict/words
|
|
||||||
:autocmd BufLeave .letter set dict=
|
|
||||||
:autocmd BufRead,BufNewFile *.c,*.h set tw=0 cin noic
|
|
||||||
:autocmd BufEnter *.c,*.h abbr FOR for (i = 0; i < 3; ++i)<CR>{<CR>}<Esc>O
|
|
||||||
:autocmd BufLeave *.c,*.h unabbr FOR
|
|
||||||
|
|
||||||
For makefiles (makefile, Makefile, imakefile, makefile.unix, etc.): >
|
|
||||||
|
|
||||||
:autocmd BufEnter ?akefile* set include=^s\=include
|
|
||||||
:autocmd BufLeave ?akefile* set include&
|
|
||||||
|
|
||||||
To always start editing C files at the first function: >
|
|
||||||
|
|
||||||
:autocmd BufRead *.c,*.h 1;/^{
|
|
||||||
|
|
||||||
Without the "1;" above, the search would start from wherever the file was
|
|
||||||
entered, rather than from the start of the file.
|
|
||||||
|
|
||||||
*skeleton* *template*
|
|
||||||
To read a skeleton (template) file when opening a new file: >
|
|
||||||
|
|
||||||
:autocmd BufNewFile *.c 0r ~/vim/skeleton.c
|
|
||||||
:autocmd BufNewFile *.h 0r ~/vim/skeleton.h
|
|
||||||
:autocmd BufNewFile *.java 0r ~/vim/skeleton.java
|
|
||||||
|
|
||||||
To insert the current date and time in a *.html file when writing it: >
|
|
||||||
|
|
||||||
:autocmd BufWritePre,FileWritePre *.html ks|call LastMod()|'s
|
|
||||||
:fun LastMod()
|
|
||||||
: if line("$") > 20
|
|
||||||
: let l = 20
|
|
||||||
: else
|
|
||||||
: let l = line("$")
|
|
||||||
: endif
|
|
||||||
: exe "1," . l . "g/Last modified: /s/Last modified: .*/Last modified: " .
|
|
||||||
: \ strftime("%Y %b %d")
|
|
||||||
:endfun
|
|
||||||
|
|
||||||
You need to have a line "Last modified: <date time>" in the first 20 lines
|
|
||||||
of the file for this to work. Vim replaces <date time> (and anything in the
|
|
||||||
same line after it) with the current date and time. Explanation:
|
|
||||||
ks mark current position with mark 's'
|
|
||||||
call LastMod() call the LastMod() function to do the work
|
|
||||||
's return the cursor to the old position
|
|
||||||
The LastMod() function checks if the file is shorter than 20 lines, and then
|
|
||||||
uses the ":g" command to find lines that contain "Last modified: ". For those
|
|
||||||
lines the ":s" command is executed to replace the existing date with the
|
|
||||||
current one. The ":execute" command is used to be able to use an expression
|
|
||||||
for the ":g" and ":s" commands. The date is obtained with the strftime()
|
|
||||||
function. You can change its argument to get another date string.
|
|
||||||
|
|
||||||
When entering :autocmd on the command-line, completion of events and command
|
|
||||||
names may be done (with <Tab>, CTRL-D, etc.) where appropriate.
|
|
||||||
|
|
||||||
Vim executes all matching autocommands in the order that you specify them.
|
|
||||||
It is recommended that your first autocommand be used for all files by using
|
|
||||||
"*" as the file pattern. This means that you can define defaults you like
|
|
||||||
here for any settings, and if there is another matching autocommand it will
|
|
||||||
override these. But if there is no other matching autocommand, then at least
|
|
||||||
your default settings are recovered (if entering this file from another for
|
|
||||||
which autocommands did match). Note that "*" will also match files starting
|
|
||||||
with ".", unlike Unix shells.
|
|
||||||
|
|
||||||
*autocmd-searchpat*
|
|
||||||
Autocommands do not change the current search patterns. Vim saves the current
|
|
||||||
search patterns before executing autocommands then restores them after the
|
|
||||||
autocommands finish. This means that autocommands do not affect the strings
|
|
||||||
highlighted with the 'hlsearch' option. Within autocommands, you can still
|
|
||||||
use search patterns normally, e.g., with the "n" command.
|
|
||||||
If you want an autocommand to set the search pattern, such that it is used
|
|
||||||
after the autocommand finishes, use the ":let @/ =" command.
|
|
||||||
The search-highlighting cannot be switched off with ":nohlsearch" in an
|
|
||||||
autocommand. Use the 'h' flag in the 'viminfo' option to disable search-
|
|
||||||
highlighting when starting Vim.
|
|
||||||
|
|
||||||
*Cmd-event*
|
|
||||||
When using one of the "*Cmd" events, the matching autocommands are expected to
|
|
||||||
do the file reading or writing. This can be used when working with a special
|
|
||||||
kind of file, for example on a remote system.
|
|
||||||
CAREFUL: If you use these events in a wrong way, it may have the effect of
|
|
||||||
making it impossible to read or write the matching files! Make sure you test
|
|
||||||
your autocommands properly. Best is to use a pattern that will never match a
|
|
||||||
normal file name, for example "ftp://*".
|
|
||||||
|
|
||||||
When defining a BufReadCmd it will be difficult for Vim to recover a crashed
|
|
||||||
editing session. When recovering from the original file, Vim reads only those
|
|
||||||
parts of a file that are not found in the swap file. Since that is not
|
|
||||||
possible with a BufReadCmd, use the |:preserve| command to make sure the
|
|
||||||
original file isn't needed for recovery. You might want to do this only when
|
|
||||||
you expect the file to be modified.
|
|
||||||
|
|
||||||
The |v:cmdarg| variable holds the "++enc=" and "++ff=" argument that are
|
|
||||||
effective. These should be used for the command that reads/writes the file.
|
|
||||||
The |v:cmdbang| variable is one when "!" was used, zero otherwise.
|
|
||||||
|
|
||||||
See the $VIMRUNTIME/plugin/netrw.vim for examples.
|
|
||||||
|
|
||||||
vim:tw=78:ts=8:ft=help:norl:
|
|
||||||
File diff suppressed because it is too large
Load Diff
@@ -1,992 +0,0 @@
|
|||||||
*cmdline.txt* For Vim version 6.3. Last change: 2004 Mar 31
|
|
||||||
|
|
||||||
|
|
||||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
|
||||||
|
|
||||||
|
|
||||||
*Cmdline-mode* *Command-line-mode*
|
|
||||||
Command-line mode *Cmdline* *Command-line* *mode-cmdline* *:*
|
|
||||||
|
|
||||||
Command-line mode is used to enter Ex commands (":"), search patterns
|
|
||||||
("/" and "?"), and filter commands ("!").
|
|
||||||
|
|
||||||
Basic command line editing is explained in chapter 20 of the user manual
|
|
||||||
|usr_20.txt|.
|
|
||||||
|
|
||||||
1. Command-line editing |cmdline-editing|
|
|
||||||
2. Command-line completion |cmdline-completion|
|
|
||||||
3. Ex command-lines |cmdline-lines|
|
|
||||||
4. Ex command-line ranges |cmdline-ranges|
|
|
||||||
5. Ex special characters |cmdline-special|
|
|
||||||
6. Command-line window |cmdline-window|
|
|
||||||
|
|
||||||
==============================================================================
|
|
||||||
1. Command-line editing *cmdline-editing*
|
|
||||||
|
|
||||||
Normally characters are inserted in front of the cursor position. You can
|
|
||||||
move around in the command-line with the left and right cursor keys. With the
|
|
||||||
<Insert> key, you can toggle between inserting and overstriking characters.
|
|
||||||
{Vi: can only alter the last character in the line}
|
|
||||||
|
|
||||||
Note that if your keyboard does not have working cursor keys or any of the
|
|
||||||
other special keys, you can use ":cnoremap" to define another key for them.
|
|
||||||
For example, to define tcsh style editing keys: *tcsh-style* >
|
|
||||||
:cnoremap <C-A> <Home>
|
|
||||||
:cnoremap <C-F> <Right>
|
|
||||||
:cnoremap <C-B> <Left>
|
|
||||||
:cnoremap <Esc>b <S-Left>
|
|
||||||
:cnoremap <Esc>f <S-Right>
|
|
||||||
(<> notation |<>|; type all this literally)
|
|
||||||
|
|
||||||
*cmdline-too-long*
|
|
||||||
When the command line is getting longer than what fits on the screen, only the
|
|
||||||
part that fits will be shown. The cursor can only move in this visible part,
|
|
||||||
thus you cannot edit beyond that.
|
|
||||||
|
|
||||||
*cmdline-history* *history*
|
|
||||||
The command-lines that you enter are remembered in a history table. You can
|
|
||||||
recall them with the up and down cursor keys. There are actually four
|
|
||||||
history tables:
|
|
||||||
- one for ':' commands
|
|
||||||
- one for search strings
|
|
||||||
- one for expressions
|
|
||||||
- one for input lines, typed for the |input()| function.
|
|
||||||
These are completely separate. Each history can only be accessed when
|
|
||||||
entering the same type of line.
|
|
||||||
Use the 'history' option to set the number of lines that are remembered
|
|
||||||
(default: 20).
|
|
||||||
Notes:
|
|
||||||
- When you enter a command-line that is exactly the same as an older one, the
|
|
||||||
old one is removed (to avoid repeated commands moving older commands out of
|
|
||||||
the history).
|
|
||||||
- Only commands that are typed are remembered. Ones that completely come from
|
|
||||||
mappings are not put in the history
|
|
||||||
- All searches are put in the search history, including the ones that come
|
|
||||||
from commands like "*" and "#". But for a mapping, only the last search is
|
|
||||||
remembered (to avoid that long mappings trash the history).
|
|
||||||
{Vi: no history}
|
|
||||||
{not available when compiled without the |+cmdline_hist| feature}
|
|
||||||
|
|
||||||
There is an automatic completion of names on the command-line; see
|
|
||||||
|cmdline-completion|.
|
|
||||||
|
|
||||||
*c_CTRL-V*
|
|
||||||
CTRL-V Insert next non-digit literally. Up to three digits form the
|
|
||||||
decimal value of a single byte. The non-digit and the three
|
|
||||||
digits are not considered for mapping. This works the same
|
|
||||||
way as in Insert mode (see above, |i_CTRL-V|).
|
|
||||||
Note: Under Windows CTRL-V is often mapped to paste text.
|
|
||||||
Use CTRL-Q instead then.
|
|
||||||
*c_CTRL-Q*
|
|
||||||
CTRL-Q Same as CTRL-V. But with some terminals it is used for
|
|
||||||
control flow, it doesn't work then.
|
|
||||||
|
|
||||||
*c_<Left>*
|
|
||||||
<Left> cursor left
|
|
||||||
*c_<Right>*
|
|
||||||
<Right> cursor right
|
|
||||||
*c_<S-Left>*
|
|
||||||
<S-Left> or <C-Left> *c_<C-Left>*
|
|
||||||
cursor one WORD left
|
|
||||||
*c_<S-Right>*
|
|
||||||
<S-Right> or <C-Right> *c_<C-Right>*
|
|
||||||
cursor one WORD right
|
|
||||||
CTRL-B or <Home> *c_CTRL-B* *c_<Home>*
|
|
||||||
cursor to beginning of command-line
|
|
||||||
CTRL-E or <End> *c_CTRL-E* *c_<End>*
|
|
||||||
cursor to end of command-line
|
|
||||||
|
|
||||||
*c_<LeftMouse>*
|
|
||||||
<LeftMouse> cursor to position of mouse click.
|
|
||||||
|
|
||||||
CTRL-H *c_<BS>* *c_CTRL-H*
|
|
||||||
<BS> delete the character in front of the cursor (see |:fixdel| if
|
|
||||||
your <BS> key does not do what you want).
|
|
||||||
*c_<Del>*
|
|
||||||
<Del> delete the character under the cursor (at end of line:
|
|
||||||
character before the cursor) (see |:fixdel| if your <Del>
|
|
||||||
key does not do what you want).
|
|
||||||
*c_CTRL-W*
|
|
||||||
CTRL-W delete the word before the cursor
|
|
||||||
*c_CTRL-U*
|
|
||||||
CTRL-U remove all characters between the cursor position and
|
|
||||||
the beginning of the line. Previous versions of vim
|
|
||||||
deleted all characters on the line. If that is the
|
|
||||||
preferred behavior, add the following to your .vimrc: >
|
|
||||||
:cnoremap <C-U> <C-E><C-U>
|
|
||||||
<
|
|
||||||
Note: if the command-line becomes empty with one of the
|
|
||||||
delete commands, Command-line mode is quit.
|
|
||||||
*c_<Insert>*
|
|
||||||
<Insert> Toggle between insert and overstrike. {not in Vi}
|
|
||||||
|
|
||||||
{char1} <BS> {char2} or *c_digraph*
|
|
||||||
CTRL-K {char1} {char2} *c_CTRL-K*
|
|
||||||
enter digraph (see |digraphs|). When {char1} is a special
|
|
||||||
key, the code for that key is inserted in <> form. {not in Vi}
|
|
||||||
|
|
||||||
CTRL-R {0-9a-z"%#:-=.} *c_CTRL-R* *c_<C-R>*
|
|
||||||
Insert the contents of a numbered or named register. Between
|
|
||||||
typing CTRL-R and the second character '"' will be displayed
|
|
||||||
to indicate that you are expected to enter the name of a
|
|
||||||
register.
|
|
||||||
The text is inserted as if you typed it, but mappings and
|
|
||||||
abbreviations are not used. Command-line completion through
|
|
||||||
'wildchar' is not triggered though. And characters that end
|
|
||||||
the command line are inserted literally (<Esc>, <CR>, <NL>,
|
|
||||||
<C-C>). A <BS> or CTRL-W could still end the command line
|
|
||||||
though, and remaining characters will then be interpreted in
|
|
||||||
another mode, which might not be what you intended.
|
|
||||||
Special registers:
|
|
||||||
'"' the unnamed register, containing the text of
|
|
||||||
the last delete or yank
|
|
||||||
'%' the current file name
|
|
||||||
'#' the alternate file name
|
|
||||||
'*' the clipboard contents (X11: primary selection)
|
|
||||||
'+' the clipboard contents
|
|
||||||
'/' the last search pattern
|
|
||||||
':' the last command-line
|
|
||||||
'-' the last small (less than a line) delete
|
|
||||||
'.' the last inserted text
|
|
||||||
*c_CTRL-R_=*
|
|
||||||
'=' the expression register: you are prompted to
|
|
||||||
enter an expression (see |expression|)
|
|
||||||
See |registers| about registers. {not in Vi}
|
|
||||||
|
|
||||||
CTRL-R CTRL-F *c_CTRL-R_CTRL-F* *c_<C-R>_<C-F>*
|
|
||||||
CTRL-R CTRL-P *c_CTRL-R_CTRL-P* *c_<C-R>_<C-P>*
|
|
||||||
CTRL-R CTRL-W *c_CTRL-R_CTRL-W* *c_<C-R>_<C-W>*
|
|
||||||
CTRL-R CTRL-A *c_CTRL-R_CTRL-A* *c_<C-R>_<C-A>*
|
|
||||||
Insert the object under the cursor:
|
|
||||||
CTRL-F the Filename under the cursor
|
|
||||||
CTRL-P the Filename under the cursor, expanded with
|
|
||||||
'path' as in |gf|
|
|
||||||
CTRL-W the Word under the cursor
|
|
||||||
CTRL-A the WORD under the cursor; see |WORD|
|
|
||||||
{not in Vi}
|
|
||||||
CTRL-F and CTRL-P: {only when +file_in_path feature is
|
|
||||||
included}
|
|
||||||
|
|
||||||
*c_CTRL-R_CTRL-R* *c_<C-R>_<C-R>*
|
|
||||||
*c_CTRL-R_CTRL-O* *c_<C-R>_<C-O>*
|
|
||||||
CTRL-R CTRL-R {0-9a-z"%#:-=. CTRL-F CTRL-P CTRL-W CTRL-A}
|
|
||||||
CTRL-R CTRL-O {0-9a-z"%#:-=. CTRL-F CTRL-P CTRL-W CTRL-A}
|
|
||||||
Insert register or object under the cursor. Works like
|
|
||||||
|c_CTRL-R| but inserts the text literally. For example, if
|
|
||||||
register a contains "xy^Hz" (where ^H is a backspace),
|
|
||||||
"CTRL-R a" will insert "xz" while "CTRL-R CTRL-R a" will
|
|
||||||
insert "xy^Hz".
|
|
||||||
|
|
||||||
CTRL-\ e {expr} *c_CTRL-\_e*
|
|
||||||
Evaluate {expr} and replace the whole command line with the
|
|
||||||
result. You will be prompted for the expression, type <Enter>
|
|
||||||
to finish it. It's most useful in mappings though. See
|
|
||||||
|expression|.
|
|
||||||
See |c_CTRL-R_=| for inserting the result of an expression.
|
|
||||||
Useful functions are |getcmdline()| and |getcmdpos()|.
|
|
||||||
The cursor position is unchanged, except when the cursor was
|
|
||||||
at the end of the line, then it stays at the end.
|
|
||||||
|setcmdpos()| can be used to set the cursor position.
|
|
||||||
Example: >
|
|
||||||
:cmap <F7> <C-\>eAppendSome()<CR>
|
|
||||||
:func AppendSome()
|
|
||||||
:let cmd = getcmdline() . " Some()"
|
|
||||||
:" place the cursor on the )
|
|
||||||
:call setcmdpos(strlen(cmd))
|
|
||||||
:return cmd
|
|
||||||
:endfunc
|
|
||||||
<
|
|
||||||
*c_CTRL-Y*
|
|
||||||
CTRL-Y When there is a modeless selection, copy the selection into
|
|
||||||
the clipboard. |modeless-selection|
|
|
||||||
If there is no selection CTRL-Y is inserted as a character.
|
|
||||||
|
|
||||||
CTRL-J *c_CTRL-J* *c_<NL>* *c_<CR>*
|
|
||||||
<CR> or <NL> start entered command
|
|
||||||
*c_<Esc>*
|
|
||||||
<Esc> When typed and 'x' not present in 'cpoptions', quit
|
|
||||||
Command-line mode without executing. In macros or when 'x'
|
|
||||||
present in 'cpoptions', start entered command.
|
|
||||||
*c_CTRL-C*
|
|
||||||
CTRL-C quit command-line without executing
|
|
||||||
|
|
||||||
*c_<Up>*
|
|
||||||
<Up> recall older command-line from history, whose beginning
|
|
||||||
matches the current command-line (see below).
|
|
||||||
{not available when compiled without the |+cmdline_hist|
|
|
||||||
feature}
|
|
||||||
*c_<Down>*
|
|
||||||
<Down> recall more recent command-line from history, whose beginning
|
|
||||||
matches the current command-line (see below).
|
|
||||||
{not available when compiled without the |+cmdline_hist|
|
|
||||||
feature}
|
|
||||||
|
|
||||||
*c_<S-Up>* *c_<PageUp>*
|
|
||||||
<S-Up> or <PageUp>
|
|
||||||
recall older command-line from history
|
|
||||||
{not available when compiled without the |+cmdline_hist|
|
|
||||||
feature}
|
|
||||||
*c_<S-Down>* *c_<PageDown>*
|
|
||||||
<S-Down> or <PageDown>
|
|
||||||
recall more recent command-line from history
|
|
||||||
{not available when compiled without the |+cmdline_hist|
|
|
||||||
feature}
|
|
||||||
|
|
||||||
CTRL-D command-line completion (see |cmdline-completion|)
|
|
||||||
'wildchar' option
|
|
||||||
command-line completion (see |cmdline-completion|)
|
|
||||||
CTRL-N command-line completion (see |cmdline-completion|)
|
|
||||||
CTRL-P command-line completion (see |cmdline-completion|)
|
|
||||||
CTRL-A command-line completion (see |cmdline-completion|)
|
|
||||||
CTRL-L command-line completion (see |cmdline-completion|)
|
|
||||||
|
|
||||||
*c_CTRL-_*
|
|
||||||
CTRL-_ a - switch between Hebrew and English keyboard mode, which is
|
|
||||||
private to the command-line and not related to hkmap.
|
|
||||||
This is useful when Hebrew text entry is required in the
|
|
||||||
command-line, searches, abbreviations, etc. Applies only if
|
|
||||||
Vim is compiled with the |+rightleft| feature and the
|
|
||||||
'allowrevins' option is set.
|
|
||||||
See |rileft.txt|.
|
|
||||||
|
|
||||||
b - switch between Farsi and English keyboard mode, which is
|
|
||||||
private to the command-line and not related to fkmap. In
|
|
||||||
Farsi keyboard mode the characters are inserted in reverse
|
|
||||||
insert manner. This is useful when Farsi text entry is
|
|
||||||
required in the command-line, searches, abbreviations, etc.
|
|
||||||
Applies only if Vim is compiled with the |+farsi| feature.
|
|
||||||
See |farsi.txt|.
|
|
||||||
|
|
||||||
*c_CTRL-^*
|
|
||||||
CTRL-^ Toggle the use of language |:lmap| mappings and/or Input
|
|
||||||
Method.
|
|
||||||
When typing a pattern for a search command and 'imsearch' is
|
|
||||||
not -1, VAL is the value of 'imsearch', otherwise VAL is the
|
|
||||||
value of 'iminsert'.
|
|
||||||
When language mappings are defined:
|
|
||||||
- If VAL is 1 (langmap mappings used) it becomes 0 (no langmap
|
|
||||||
mappings used).
|
|
||||||
- If VAL was not 1 it becomes 1, thus langmap mappings are
|
|
||||||
enabled.
|
|
||||||
When no language mappings are defined:
|
|
||||||
- If VAL is 2 (Input Method is used) it becomes 0 (no input
|
|
||||||
method used)
|
|
||||||
- If VAL has another value it becomes 2, thus the Input Method
|
|
||||||
is enabled.
|
|
||||||
These language mappings are normally used to type characters
|
|
||||||
that are different from what the keyboard produces. The
|
|
||||||
'keymap' option can be used to install a whole number of them.
|
|
||||||
When entering a command line, langmap mappings are switched
|
|
||||||
off, since you are expected to type a command. After
|
|
||||||
switching it on with CTRL-^, the new state is not used again
|
|
||||||
for the next command or Search pattern.
|
|
||||||
{not in Vi}
|
|
||||||
|
|
||||||
For Emacs-style editing on the command-line see |emacs-keys|.
|
|
||||||
|
|
||||||
The <Up> and <Down> keys take the current command-line as a search string.
|
|
||||||
The beginning of the next/previous command-lines are compared with this
|
|
||||||
string. The first line that matches is the new command-line. When typing
|
|
||||||
these two keys repeatedly, the same string is used again. For example, this
|
|
||||||
can be used to find the previous substitute command: Type ":s" and then <Up>.
|
|
||||||
The same could be done by typing <S-Up> a number of times until the desired
|
|
||||||
command-line is shown. (Note: the shifted arrow keys do not work on all
|
|
||||||
terminals)
|
|
||||||
|
|
||||||
*his* *:history*
|
|
||||||
:his[tory] Print the history of last entered commands.
|
|
||||||
{not in Vi}
|
|
||||||
{not available when compiled without the |+cmdline_hist|
|
|
||||||
feature}
|
|
||||||
|
|
||||||
:his[tory] [{name}] [{first}][, [{last}]]
|
|
||||||
List the contents of history {name} which can be:
|
|
||||||
c[md] or : command-line history
|
|
||||||
s[earch] or / search string history
|
|
||||||
e[xpr] or = expression register history
|
|
||||||
i[nput] or @ input line history
|
|
||||||
a[ll] all of the above
|
|
||||||
{not in Vi}
|
|
||||||
|
|
||||||
If the numbers {first} and/or {last} are given, the respective
|
|
||||||
range of entries from a history is listed. These numbers can
|
|
||||||
be specified in the following form:
|
|
||||||
*:history-indexing*
|
|
||||||
A positive number represents the absolute index of an entry
|
|
||||||
as it is given in the first column of a :history listing.
|
|
||||||
This number remains fixed even if other entries are deleted.
|
|
||||||
|
|
||||||
A negative number means the relative position of an entry,
|
|
||||||
counted from the newest entry (which has index -1) backwards.
|
|
||||||
|
|
||||||
Examples:
|
|
||||||
List entries 6 to 12 from the search history: >
|
|
||||||
:history / 6,12
|
|
||||||
<
|
|
||||||
List the recent five entries from all histories: >
|
|
||||||
:history all -5,
|
|
||||||
|
|
||||||
==============================================================================
|
|
||||||
2. Command-line completion *cmdline-completion*
|
|
||||||
|
|
||||||
When editing the command-line, a few commands can be used to complete the
|
|
||||||
word before the cursor. This is available for:
|
|
||||||
|
|
||||||
- Command names: At the start of the command-line.
|
|
||||||
- Tags: Only after the ":tag" command.
|
|
||||||
- File names: Only after a command that accepts a file name or a setting for
|
|
||||||
an option that can be set to a file name. This is called file name
|
|
||||||
completion.
|
|
||||||
- Options: Only after the ":set" command.
|
|
||||||
- Mappings: Only after a ":map" or similar command.
|
|
||||||
- Variable and function names: Only after a ":if", ":call" or similar command.
|
|
||||||
|
|
||||||
When Vim was compiled with the |+cmdline_compl| feature disabled, only file
|
|
||||||
names, directories and help items can be completed.
|
|
||||||
|
|
||||||
These are the commands that can be used:
|
|
||||||
|
|
||||||
*c_CTRL-D*
|
|
||||||
CTRL-D List names that match the pattern in front of the cursor.
|
|
||||||
When showing file names, directories are highlighted (see
|
|
||||||
'highlight' option). Names where 'suffixes' matches are moved
|
|
||||||
to the end.
|
|
||||||
*c_CTRL-I* *c_wildchar* *c_<Tab>*
|
|
||||||
'wildchar' option
|
|
||||||
A match is done on the pattern in front of the cursor. The
|
|
||||||
match (if there are several, the first match) is inserted
|
|
||||||
in place of the pattern. (Note: does not work inside a
|
|
||||||
macro, because <Tab> or <Esc> are mostly used as 'wildchar',
|
|
||||||
and these have a special meaning in some macros.) When typed
|
|
||||||
again and there were multiple matches, the next
|
|
||||||
match is inserted. After the last match, the first is used
|
|
||||||
again (wrap around).
|
|
||||||
The behavior can be changed with the 'wildmode' option.
|
|
||||||
*c_CTRL-N*
|
|
||||||
CTRL-N After using 'wildchar' which got multiple matches, go to next
|
|
||||||
match. Otherwise recall more recent command-line from history.
|
|
||||||
<S-Tab> *c_CTRL-P* *c_<S-Tab>*
|
|
||||||
CTRL-P After using 'wildchar' which got multiple matches, go to
|
|
||||||
previous match. Otherwise recall older command-line from
|
|
||||||
history. <S-Tab> only works with the GUI, on the Amiga and
|
|
||||||
with MS-DOS.
|
|
||||||
*c_CTRL-A*
|
|
||||||
CTRL-A All names that match the pattern in front of the cursor are
|
|
||||||
inserted.
|
|
||||||
*c_CTRL-L*
|
|
||||||
CTRL-L A match is done on the pattern in front of the cursor. If
|
|
||||||
there is one match, it is inserted in place of the pattern.
|
|
||||||
If there are multiple matches the longest common part is
|
|
||||||
inserted in place of the pattern. If the result is shorter
|
|
||||||
than the pattern, no completion is done.
|
|
||||||
|
|
||||||
The 'wildchar' option defaults to <Tab> (CTRL-E when in Vi compatible mode; in
|
|
||||||
a previous version <Esc> was used). In the pattern standard wildcards '*' and
|
|
||||||
'?' are accepted. '*' matches any string, '?' matches exactly one character.
|
|
||||||
|
|
||||||
If you like tcsh's autolist completion, you can use this mapping:
|
|
||||||
:cnoremap X <C-L><C-D>
|
|
||||||
(Where X is the command key to use, <C-L> is CTRL-L and <C-D> is CTRL-D)
|
|
||||||
This will find the longest match and then list all matching files.
|
|
||||||
|
|
||||||
If you like tcsh's autolist completion, you can use the 'wildmode' option to
|
|
||||||
emulate it. For example, this mimics autolist=ambiguous:
|
|
||||||
:set wildmode=longest,list
|
|
||||||
This will find the longest match with the first 'wildchar', then list all
|
|
||||||
matching files with the next.
|
|
||||||
|
|
||||||
*suffixes*
|
|
||||||
For file name completion you can use the 'suffixes' option to set a priority
|
|
||||||
between files with almost the same name. If there are multiple matches,
|
|
||||||
those files with an extension that is in the 'suffixes' option are ignored.
|
|
||||||
The default is ".bak,~,.o,.h,.info,.swp,.obj", which means that files ending
|
|
||||||
in ".bak", "~", ".o", ".h", ".info", ".swp" and ".obj" are sometimes ignored.
|
|
||||||
It is impossible to ignore suffixes with two dots. Examples:
|
|
||||||
|
|
||||||
pattern: files: match: ~
|
|
||||||
test* test.c test.h test.o test.c
|
|
||||||
test* test.h test.o test.h and test.o
|
|
||||||
test* test.i test.h test.c test.i and test.c
|
|
||||||
|
|
||||||
If there is more than one matching file (after ignoring the ones matching
|
|
||||||
the 'suffixes' option) the first file name is inserted. You can see that
|
|
||||||
there is only one match when you type 'wildchar' twice and the completed
|
|
||||||
match stays the same. You can get to the other matches by entering
|
|
||||||
'wildchar', CTRL-N or CTRL-P. All files are included, also the ones with
|
|
||||||
extensions matching the 'suffixes' option.
|
|
||||||
|
|
||||||
To completely ignore files with some extension use 'wildignore'.
|
|
||||||
|
|
||||||
The old value of an option can be obtained by hitting 'wildchar' just after
|
|
||||||
the '='. For example, typing 'wildchar' after ":set dir=" will insert the
|
|
||||||
current value of 'dir'. This overrules file name completion for the options
|
|
||||||
that take a file name.
|
|
||||||
|
|
||||||
If you would like using <S-Tab> for CTRL-P in an xterm, put this command in
|
|
||||||
your .cshrc: >
|
|
||||||
xmodmap -e "keysym Tab = Tab Find"
|
|
||||||
And this in your .vimrc: >
|
|
||||||
:cmap <Esc>[1~ <C-P>
|
|
||||||
|
|
||||||
==============================================================================
|
|
||||||
3. Ex command-lines *cmdline-lines*
|
|
||||||
|
|
||||||
The Ex commands have a few specialties:
|
|
||||||
|
|
||||||
*:quote*
|
|
||||||
'"' at the start of a line causes the whole line to be ignored. '"'
|
|
||||||
after a command causes the rest of the line to be ignored. This can be used
|
|
||||||
to add comments. Example: >
|
|
||||||
:set ai "set 'autoindent' option
|
|
||||||
It is not possible to add a comment to a shell command ":!cmd" or to the
|
|
||||||
":map" command and friends, because they see the '"' as part of their
|
|
||||||
argument.
|
|
||||||
|
|
||||||
*:bar* *:\bar*
|
|
||||||
'|' can be used to separate commands, so you can give multiple commands in one
|
|
||||||
line. If you want to use '|' in an argument, precede it with '\'.
|
|
||||||
|
|
||||||
These commands see the '|' as their argument, and can therefore not be
|
|
||||||
followed by another command:
|
|
||||||
:argdo
|
|
||||||
:autocmd
|
|
||||||
:bufdo
|
|
||||||
:command
|
|
||||||
:cscope
|
|
||||||
:debug
|
|
||||||
:folddoopen
|
|
||||||
:folddoclosed
|
|
||||||
:function
|
|
||||||
:global
|
|
||||||
:help
|
|
||||||
:helpfind
|
|
||||||
:make
|
|
||||||
:normal
|
|
||||||
:perl
|
|
||||||
:perldo
|
|
||||||
:promptfind
|
|
||||||
:promptrepl
|
|
||||||
:pyfile
|
|
||||||
:python
|
|
||||||
:registers
|
|
||||||
:read !
|
|
||||||
:scscope
|
|
||||||
:tcl
|
|
||||||
:tcldo
|
|
||||||
:tclfile
|
|
||||||
:vglobal
|
|
||||||
:windo
|
|
||||||
:write !
|
|
||||||
:[range]!
|
|
||||||
a user defined command without the "-bar" argument |:command|
|
|
||||||
|
|
||||||
Note that this is confusing (inherited from Vi): With ":g" the '|' is included
|
|
||||||
in the command, with ":s" it is not.
|
|
||||||
|
|
||||||
To be able to use another command anyway, use the ":execute" command.
|
|
||||||
Example (append the output of "ls" and jump to the first line): >
|
|
||||||
:execute 'r !ls' | '[
|
|
||||||
|
|
||||||
There is one exception: When the 'b' flag is present in 'cpoptions', with the
|
|
||||||
":map" and ":abbr" commands and friends CTRL-V needs to be used instead of
|
|
||||||
'\'. You can also use "<Bar>" instead. See also |map_bar|.
|
|
||||||
|
|
||||||
Examples: >
|
|
||||||
:!ls | wc view the output of two commands
|
|
||||||
:r !ls | wc insert the same output in the text
|
|
||||||
:%g/foo/p|> moves all matching lines one shiftwidth
|
|
||||||
:%s/foo/bar/|> moves one line one shiftwidth
|
|
||||||
:map q 10^V| map "q" to "10|"
|
|
||||||
:map q 10\| map \ l map "q" to "10\" and map "\" to "l"
|
|
||||||
(when 'b' is present in 'cpoptions')
|
|
||||||
|
|
||||||
You can also use <NL> to separate commands in the same way as with '|'. To
|
|
||||||
insert a <NL> use CTRL-V CTRL-J. "^@" will be shown. Using '|' is the
|
|
||||||
preferred method. But for external commands a <NL> must be used, because a
|
|
||||||
'|' is included in the external command. To avoid the special meaning of <NL>
|
|
||||||
it must be preceded with a backslash. Example: >
|
|
||||||
:r !date<NL>-join
|
|
||||||
This reads the current date into the file and joins it with the previous line.
|
|
||||||
|
|
||||||
Note that when the command before the '|' generates an error, the following
|
|
||||||
commands will not be executed.
|
|
||||||
|
|
||||||
|
|
||||||
Because of Vi compatibility the following strange commands are supported: >
|
|
||||||
:| print current line (like ":p")
|
|
||||||
:3| print line 3 (like ":3p")
|
|
||||||
:3 goto line 3
|
|
||||||
|
|
||||||
A colon is allowed between the range and the command name. It is ignored
|
|
||||||
(this is Vi compatible). For example: >
|
|
||||||
:1,$:s/pat/string
|
|
||||||
|
|
||||||
When the character '%' or '#' is used where a file name is expected, they are
|
|
||||||
expanded to the current and alternate file name (see the chapter "editing
|
|
||||||
files" |:_%| |:_#|).
|
|
||||||
|
|
||||||
Embedded spaces in file names are allowed on the Amiga if one file name is
|
|
||||||
expected as argument. Trailing spaces will be ignored, unless escaped with a
|
|
||||||
backslash or CTRL-V. Note that the ":next" command uses spaces to separate
|
|
||||||
file names. Escape the spaces to include them in a file name. Example: >
|
|
||||||
:next foo\ bar goes\ to school\
|
|
||||||
starts editing the three files "foo bar", "goes to" and "school ".
|
|
||||||
|
|
||||||
When you want to use the special characters '"' or '|' in a command, or want
|
|
||||||
to use '%' or '#' in a file name, precede them with a backslash. The
|
|
||||||
backslash is not required in a range and in the ":substitute" command.
|
|
||||||
|
|
||||||
*:_!*
|
|
||||||
The '!' (bang) character after an Ex command makes the command behave in a
|
|
||||||
different way. The '!' should be placed immediately after the command, without
|
|
||||||
any blanks in between. If you insert blanks the '!' will be seen as an
|
|
||||||
argument for the command, which has a different meaning. For example:
|
|
||||||
:w! name write the current buffer to file "name", overwriting
|
|
||||||
any existing file
|
|
||||||
:w !name send the current buffer as standard input to command
|
|
||||||
"name"
|
|
||||||
|
|
||||||
==============================================================================
|
|
||||||
4. Ex command-line ranges *cmdline-ranges* *[range]* *E16* *E493*
|
|
||||||
|
|
||||||
Some Ex commands accept a line range in front of them. This is noted as
|
|
||||||
[range]. It consists of one or more line specifiers, separated with ',' or
|
|
||||||
';'.
|
|
||||||
|
|
||||||
The basics are explained in section |10.3| of the user manual.
|
|
||||||
|
|
||||||
*:,* *:;*
|
|
||||||
When separated with ';' the cursor position will be set to that line
|
|
||||||
before interpreting the next line specifier. This doesn't happen for ','.
|
|
||||||
Examples: >
|
|
||||||
4,/this line/
|
|
||||||
< from line 4 till match with "this line" after the cursor line. >
|
|
||||||
5;/that line/
|
|
||||||
< from line 5 till match with "that line" after line 5.
|
|
||||||
|
|
||||||
The default line specifier for most commands is the cursor position, but the
|
|
||||||
commands ":write" and ":global" have the whole file (1,$) as default.
|
|
||||||
|
|
||||||
If more line specifiers are given than required for the command, the first
|
|
||||||
one(s) will be ignored.
|
|
||||||
|
|
||||||
Line numbers may be specified with: *:range* *E14* *{address}*
|
|
||||||
{number} an absolute line number
|
|
||||||
. the current line *:.*
|
|
||||||
$ the last line in the file *:$*
|
|
||||||
% equal to 1,$ (the entire file) *:%*
|
|
||||||
't position of mark t (lowercase) *:'*
|
|
||||||
'T position of mark T (uppercase); when the mark is in
|
|
||||||
another file it cannot be used in a range
|
|
||||||
/{pattern}[/] the next line where {pattern} matches *:/*
|
|
||||||
?{pattern}[?] the previous line where {pattern} matches *:?*
|
|
||||||
\/ the next line where the previously used search
|
|
||||||
pattern matches
|
|
||||||
\? the previous line where the previously used search
|
|
||||||
pattern matches
|
|
||||||
\& the next line where the previously used substitute
|
|
||||||
pattern matches
|
|
||||||
|
|
||||||
Each may be followed (several times) by '+' or '-' and an optional number.
|
|
||||||
This number is added or subtracted from the preceding line number. If the
|
|
||||||
number is omitted, 1 is used.
|
|
||||||
|
|
||||||
The "/" and "?" after {pattern} are required to separate the pattern from
|
|
||||||
anything that follows.
|
|
||||||
|
|
||||||
The "/" and "?" may be preceded with another address. The search starts from
|
|
||||||
there. The difference from using ';' is that the cursor isn't moved.
|
|
||||||
Examples: >
|
|
||||||
/pat1//pat2/ Find line containing "pat2" after line containing
|
|
||||||
"pat1", without moving the cursor.
|
|
||||||
7;/pat2/ Find line containing "pat2", after line 7, leaving
|
|
||||||
the cursor in line 7.
|
|
||||||
|
|
||||||
The {number} must be between 0 and the number of lines in the file. When
|
|
||||||
using a 0 (zero) this is interpreted as a 1 by most commands. Commands that
|
|
||||||
use it as a count do use it as a zero (|:tag|, |:pop|, etc). Some commands
|
|
||||||
interpret the zero as "before the first line" (|:read|, search pattern, etc).
|
|
||||||
|
|
||||||
Examples: >
|
|
||||||
.+3 three lines below the cursor
|
|
||||||
/that/+1 the line below the next line containing "that"
|
|
||||||
.,$ from current line until end of file
|
|
||||||
0;/that the first line containing "that", also matches in the
|
|
||||||
first line.
|
|
||||||
1;/that the first line after line 1 containing "that"
|
|
||||||
|
|
||||||
Some commands allow for a count after the command. This count is used as the
|
|
||||||
number of lines to be used, starting with the line given in the last line
|
|
||||||
specifier (the default is the cursor line). The commands that accept a count
|
|
||||||
are the ones that use a range but do not have a file name argument (because
|
|
||||||
a file name can also be a number).
|
|
||||||
|
|
||||||
Examples: >
|
|
||||||
:s/x/X/g 5 substitute 'x' by 'X' in the current line and four
|
|
||||||
following lines
|
|
||||||
:23d 4 delete lines 23, 24, 25 and 26
|
|
||||||
|
|
||||||
|
|
||||||
Folds and Range
|
|
||||||
|
|
||||||
When folds are active the line numbers are rounded off to include the whole
|
|
||||||
closed fold. See |fold-behavior|.
|
|
||||||
|
|
||||||
|
|
||||||
Reverse Range
|
|
||||||
|
|
||||||
A range should have the lower line number first. If this is not the case, Vim
|
|
||||||
will ask you if it should swap the line numbers. This is not done within the
|
|
||||||
global command ":g".
|
|
||||||
|
|
||||||
|
|
||||||
Count and Range *N:*
|
|
||||||
|
|
||||||
When giving a count before entering ":", this is translated into:
|
|
||||||
:.,.+(count - 1)
|
|
||||||
In words: The 'count' lines at and after the cursor. Example: To delete
|
|
||||||
three lines: >
|
|
||||||
3:d<CR> is translated into: .,.+2d<CR>
|
|
||||||
<
|
|
||||||
|
|
||||||
Visual Mode and Range *v_:*
|
|
||||||
|
|
||||||
{Visual}: Starts a command-line with the Visual selected lines as a
|
|
||||||
range. The code ":'<,'>" is used for this range, which makes
|
|
||||||
it possible to select a similar line from the command-line
|
|
||||||
history for repeating a command on different Visually selected
|
|
||||||
lines.
|
|
||||||
|
|
||||||
==============================================================================
|
|
||||||
5. Ex special characters *cmdline-special*
|
|
||||||
|
|
||||||
In Ex commands, at places where a file name can be used, the following
|
|
||||||
characters have a special meaning. These can also be used in the expression
|
|
||||||
function expand() |expand()|.
|
|
||||||
% is replaced with the current file name *:_%*
|
|
||||||
# is replaced with the alternate file name *:_#*
|
|
||||||
#n (where n is a number) is replaced with the file name of
|
|
||||||
buffer n. "#0" is the same as "#"
|
|
||||||
## is replaced with all names in the argument list *:_##*
|
|
||||||
concatenated, separated by spaces. Each space in a name
|
|
||||||
is preceded with a backslash.
|
|
||||||
Note that these give the file name as it was typed. If an absolute path is
|
|
||||||
needed (when using the file name from a different directory), you need to add
|
|
||||||
":p". See |filename-modifiers|.
|
|
||||||
Note that backslashes are inserted before spaces, so that the command will
|
|
||||||
correctly interpret the file name. But this doesn't happen for shell
|
|
||||||
commands. For those you probably have to use quotes: >
|
|
||||||
:!ls "%"
|
|
||||||
:r !spell "%"
|
|
||||||
|
|
||||||
To avoid the special meaning of '%' and '#' insert a backslash before it.
|
|
||||||
Detail: The special meaning is always escaped when there is a backslash before
|
|
||||||
it, no matter how many backslashes.
|
|
||||||
you type: result ~
|
|
||||||
# alternate.file
|
|
||||||
\# #
|
|
||||||
\\# \#
|
|
||||||
|
|
||||||
*:<cword>* *:<cWORD>* *:<cfile>* *<cfile>*
|
|
||||||
*:<sfile>* *<sfile>* *:<afile>* *<afile>*
|
|
||||||
*:<abuf>* *<abuf>* *:<amatch>* *<amatch>*
|
|
||||||
*E495* *E496* *E497* *E498* *E499* *E500*
|
|
||||||
Note: these are typed literally, they are not special keys!
|
|
||||||
<cword> is replaced with the word under the cursor (like |star|)
|
|
||||||
<cWORD> is replaced with the WORD under the cursor (see |WORD|)
|
|
||||||
<cfile> is replaced with the path name under the cursor (like what
|
|
||||||
|gf| uses)
|
|
||||||
<afile> when executing autocommands, is replaced with the file name
|
|
||||||
for a file read or write
|
|
||||||
<abuf> when executing autocommands, is replaced with the currently
|
|
||||||
effective buffer number (for ":r file" it is the current
|
|
||||||
buffer, the file being read is not in a buffer).
|
|
||||||
<amatch> when executing autocommands, is replaced with the match for
|
|
||||||
which this autocommand was executed. It differs form
|
|
||||||
<afile> only when the file name isn't used to match with
|
|
||||||
(for FileType and Syntax events).
|
|
||||||
<sfile> when executing a ":source" command, is replaced with the
|
|
||||||
file name of the sourced file;
|
|
||||||
when executing a function, is replaced with
|
|
||||||
"function {function-name}"; function call nesting is
|
|
||||||
indicated like this:
|
|
||||||
"function {function-name1}..{function-name2}". Note that
|
|
||||||
filename-modifiers are useless when <sfile> is used inside
|
|
||||||
a function.
|
|
||||||
|
|
||||||
*filename-modifiers*
|
|
||||||
*:_%:* *::8* *::p* *::.* *::~* *::h* *::t* *::r* *::e* *::s* *::gs*
|
|
||||||
The file name modifiers can be used after "%", "#", "#n", "<cfile>", "<sfile>",
|
|
||||||
"<afile>" or "<abuf>". They are also used with the |fnamemodify()| function.
|
|
||||||
These are not available when Vim has been compiled without the |+modify_fname|
|
|
||||||
feature.
|
|
||||||
These modifiers can be given, in this order:
|
|
||||||
:p Make file name a full path. Must be the first modifier. Also
|
|
||||||
changes "~/" (and "~user/" for Unix and VMS) to the path for
|
|
||||||
the home directory. If the name is a directory a path
|
|
||||||
separator is added at the end. For a file name that does not
|
|
||||||
exist and does not have an absolute path the result is
|
|
||||||
unpredictable.
|
|
||||||
:8 Converts the path to 8.3 short format (currently only on
|
|
||||||
win32). Will act on as much of a path that is an existing
|
|
||||||
path.
|
|
||||||
:~ Reduce file name to be relative to the home directory, if
|
|
||||||
possible. File name is unmodified if it is not below the home
|
|
||||||
directory.
|
|
||||||
:. Reduce file name to be relative to current directory, if
|
|
||||||
possible. File name is unmodified if it is not below the
|
|
||||||
current directory.
|
|
||||||
For maximum shortness, use ":~:.".
|
|
||||||
:h Head of the file name (the last component and any separators
|
|
||||||
removed). Cannot be used with :e, :r or :t.
|
|
||||||
Can be repeated to remove several components at the end.
|
|
||||||
When the file name ends in a path separator, only the path
|
|
||||||
separator is removed. Thus ":p:h" on a directory name results
|
|
||||||
on the directory name itself (without trailing slash).
|
|
||||||
When the file name is an absolute path (starts with "/" for
|
|
||||||
Unix; "x:\" for MS-DOS, WIN32, OS/2; "drive:" for Amiga), that
|
|
||||||
part is not removed. When there is no head (path is relative
|
|
||||||
to current directory) the result is empty.
|
|
||||||
:t Tail of the file name (last component of the name). Must
|
|
||||||
precede any :r or :e.
|
|
||||||
:r Root of the file name (the last extension removed). When
|
|
||||||
there is only an extension (file name that starts with '.',
|
|
||||||
e.g., ".vimrc"), it is not removed. Can be repeated to remove
|
|
||||||
several extensions (last one first).
|
|
||||||
:e Extension of the file name. Only makes sense when used alone.
|
|
||||||
When there is no extension the result is empty.
|
|
||||||
When there is only an extension (file name that starts with
|
|
||||||
'.'), the result is empty. Can be repeated to include more
|
|
||||||
extensions. If there are not enough extensions (but at least
|
|
||||||
one) as much as possible are included.
|
|
||||||
:s?pat?sub?
|
|
||||||
Substitute the first occurrence of "pat" with "sub". This
|
|
||||||
works like the |:s| command. "pat" is a regular expression.
|
|
||||||
Any character can be used for '?', but it must not occur in
|
|
||||||
"pat" or "sub".
|
|
||||||
After this, the previous modifiers can be used again. For
|
|
||||||
example ":p", to make a full path after the substitution.
|
|
||||||
:gs?pat?sub?
|
|
||||||
Substitute all occurrences of "path" with "sub". Otherwise
|
|
||||||
this works like ":s".
|
|
||||||
|
|
||||||
Examples, when the file name is "src/version.c", current dir
|
|
||||||
"/home/mool/vim": >
|
|
||||||
:p /home/mool/vim/src/version.c
|
|
||||||
:p:. src/version.c
|
|
||||||
:p:~ ~/vim/src/version.c
|
|
||||||
:h src
|
|
||||||
:p:h /home/mool/vim/src
|
|
||||||
:p:h:h /home/mool/vim
|
|
||||||
:t version.c
|
|
||||||
:p:t version.c
|
|
||||||
:r src/version
|
|
||||||
:p:r /home/mool/vim/src/version
|
|
||||||
:t:r version
|
|
||||||
:e c
|
|
||||||
:s?version?main? src/main.c
|
|
||||||
:s?version?main?:p /home/mool/vim/src/main.c
|
|
||||||
:p:gs?/?\\? \home\mool\vim\src\version.c
|
|
||||||
|
|
||||||
Examples, when the file name is "src/version.c.gz": >
|
|
||||||
:p /home/mool/vim/src/version.c.gz
|
|
||||||
:e gz
|
|
||||||
:e:e c.gz
|
|
||||||
:e:e:e c.gz
|
|
||||||
:e:e:r c
|
|
||||||
:r src/version.c
|
|
||||||
:r:e c
|
|
||||||
:r:r src/version
|
|
||||||
:r:r:r src/version
|
|
||||||
<
|
|
||||||
*extension-removal* *:_%<*
|
|
||||||
If a "<" is appended to "%", "#", "#n" or "CTRL-V p" the extension of the file
|
|
||||||
name is removed (everything after and including the last '.' in the file
|
|
||||||
name). This is included for backwards compatibility with version 3.0, the
|
|
||||||
":r" form is preferred. Examples: >
|
|
||||||
|
|
||||||
% current file name
|
|
||||||
%< current file name without extension
|
|
||||||
# alternate file name for current window
|
|
||||||
#< idem, without extension
|
|
||||||
#31 alternate file number 31
|
|
||||||
#31< idem, without extension
|
|
||||||
<cword> word under the cursor
|
|
||||||
<cWORD> WORD under the cursor (see |WORD|)
|
|
||||||
<cfile> path name under the cursor
|
|
||||||
<cfile>< idem, without extension
|
|
||||||
|
|
||||||
Note: Where a file name is expected wildcards expansion is done. On Unix the
|
|
||||||
shell is used for this, unless it can be done internally (for speed).
|
|
||||||
Backticks also work, like in >
|
|
||||||
:n `echo *.c`
|
|
||||||
(backtick expansion is not possible in |restricted-mode|)
|
|
||||||
But expansion is only done if there are any wildcards before expanding the
|
|
||||||
'%', '#', etc.. This avoids expanding wildcards inside a file name. If you
|
|
||||||
want to expand the result of <cfile>, add a wildcard character to it.
|
|
||||||
Examples: (alternate file name is "?readme?")
|
|
||||||
command expands to ~
|
|
||||||
:e # :e ?readme?
|
|
||||||
:e `ls #` :e {files matching "?readme?"}
|
|
||||||
:e #.* :e {files matching "?readme?.*"}
|
|
||||||
:cd <cfile> :cd {file name under cursor}
|
|
||||||
:cd <cfile>* :cd {file name under cursor plus "*" and then expanded}
|
|
||||||
|
|
||||||
When the expanded argument contains a "!" and it is used for a shell command
|
|
||||||
(":!cmd", ":r !cmd" or ":w !cmd"), it is escaped with a backslash to avoid it
|
|
||||||
being expanded into a previously used command. When the 'shell' option
|
|
||||||
contains "sh", this is done twice, to avoid the shell trying to expand the
|
|
||||||
"!".
|
|
||||||
|
|
||||||
*filename-backslash*
|
|
||||||
For filesystems that use a backslash as directory separator (MS-DOS, Windows,
|
|
||||||
OS/2), it's a bit difficult to recognize a backslash that is used to escape
|
|
||||||
the special meaning of the next character. The general rule is: If the
|
|
||||||
backslash is followed by a normal file name character, it does not have a
|
|
||||||
special meaning. Therefore "\file\foo" is a valid file name, you don't have
|
|
||||||
to type the backslash twice.
|
|
||||||
|
|
||||||
An exception is the '$' sign. It is a valid character in a file name. But
|
|
||||||
to avoid a file name like "$home" to be interpreted as an environment variable,
|
|
||||||
it needs to be preceded by a backslash. Therefore you need to use "/\$home"
|
|
||||||
for the file "$home" in the root directory. A few examples:
|
|
||||||
|
|
||||||
FILE NAME INTERPRETED AS ~
|
|
||||||
$home expanded to value of environment var $home
|
|
||||||
\$home file "$home" in current directory
|
|
||||||
/\$home file "$home" in root directory
|
|
||||||
\\$home file "\\", followed by expanded $home
|
|
||||||
|
|
||||||
==============================================================================
|
|
||||||
6. Command-line window *cmdline-window* *cmdwin*
|
|
||||||
|
|
||||||
In the command-line window the command line can be edited just like editing
|
|
||||||
text in any window. It is a special kind of window, because you cannot leave
|
|
||||||
it in a normal way.
|
|
||||||
{not available when compiled without the |+cmdline_hist| or |+vertsplit|
|
|
||||||
feature}
|
|
||||||
|
|
||||||
|
|
||||||
OPEN
|
|
||||||
|
|
||||||
There are two ways to open the command-line window:
|
|
||||||
1. From Command-line mode, use the key specified with the 'cedit' option.
|
|
||||||
The default is CTRL-F when 'compatible' is not set.
|
|
||||||
2. From Normal mode, use the "q:", "q/" or "q?" command. *q:* *q/* *q?*
|
|
||||||
This starts editing an Ex command-line ("q:") or search string ("q/" or
|
|
||||||
"q?"). Note that this is not possible while recording is in progress (the
|
|
||||||
"q" stops recording then).
|
|
||||||
|
|
||||||
When the window opens it is filled with the command-line history. The last
|
|
||||||
line contains the command as typed so far. The left column will show a
|
|
||||||
character that indicates the type of command-line being edited, see
|
|
||||||
|cmdwin-char|.
|
|
||||||
|
|
||||||
Vim will be in Normal mode when the editor is opened, except when 'insertmode'
|
|
||||||
is set.
|
|
||||||
|
|
||||||
The height of the window is specified with 'cmdwinheight' (or smaller if there
|
|
||||||
is no room). The window is always full width and is positioned just above the
|
|
||||||
command-line.
|
|
||||||
|
|
||||||
|
|
||||||
EDIT
|
|
||||||
|
|
||||||
You can now use commands to move around and edit the text in the window. Both
|
|
||||||
in Normal mode and Insert mode.
|
|
||||||
|
|
||||||
It is possible to use ":", "/" and other commands that use the command-line,
|
|
||||||
but it's not possible to open another command-line window then. There is no
|
|
||||||
nesting.
|
|
||||||
*E11*
|
|
||||||
The command-line window is not a normal window. It is not possible to move to
|
|
||||||
another window or edit another buffer. All commands that would do this are
|
|
||||||
disabled in the command-line window. Of course it _is_ possible to execute
|
|
||||||
any command that you entered in the command-line window.
|
|
||||||
|
|
||||||
|
|
||||||
CLOSE *E199*
|
|
||||||
|
|
||||||
There are several ways to leave the command-line window:
|
|
||||||
|
|
||||||
<CR> Execute the command-line under the cursor. Works both in
|
|
||||||
Insert and in Normal mode.
|
|
||||||
CTRL-C Continue in Command-line mode. The command-line under the
|
|
||||||
cursor is used as the command-line. Works both in Insert and
|
|
||||||
in Normal mode. ":close" also works. There is no redraw,
|
|
||||||
thus the window will remain visible.
|
|
||||||
:quit Discard the command line and go back to Normal mode.
|
|
||||||
":exit", ":xit" and CTRL-\ CTRL-N also work.
|
|
||||||
:qall Quit Vim, unless there are changes in some buffer.
|
|
||||||
:qall! Quit Vim, discarding changes to any buffer.
|
|
||||||
|
|
||||||
Once the command-line window is closed the old window sizes are restored. The
|
|
||||||
executed command applies to the window and buffer where the command-line was
|
|
||||||
started from. This works as if the command-line window was not there, except
|
|
||||||
that there will be an extra screen redraw.
|
|
||||||
The buffer used for the command-line window is deleted. Any changes to lines
|
|
||||||
other than the one that is executed with <CR> are lost.
|
|
||||||
|
|
||||||
|
|
||||||
VARIOUS
|
|
||||||
|
|
||||||
The command-line window cannot be used:
|
|
||||||
- when there already is a command-line window (no nesting)
|
|
||||||
- for entering a encryption key or when using inputsecret()
|
|
||||||
- when Vim was not compiled with the +vertsplit feature
|
|
||||||
|
|
||||||
Some options are set when the command-line window is opened:
|
|
||||||
'filetype' "vim", when editing an Ex command-line; this starts Vim syntax
|
|
||||||
highlighting if it was enabled
|
|
||||||
'rightleft' off
|
|
||||||
'modifiable' on
|
|
||||||
'buftype' "nofile"
|
|
||||||
'swapfile' off
|
|
||||||
|
|
||||||
It is allowed to write the buffer contents to a file. This is an easy way to
|
|
||||||
save the command-line history and read it back later.
|
|
||||||
|
|
||||||
If the 'wildchar' option is set to <Tab>, and the command-line window is used
|
|
||||||
for an Ex command, then two mappings will be added to use <Tab> for completion
|
|
||||||
in the command-line window, like this: >
|
|
||||||
:imap <buffer> <Tab> <C-X><C-V>
|
|
||||||
:nmap <buffer> <Tab> a<C-X><C-V>
|
|
||||||
Note that hitting <Tab> in Normal mode will do completion on the next
|
|
||||||
character. That way it works at the end of the line.
|
|
||||||
If you don't want these mappings, disable them with: >
|
|
||||||
au CmdwinEnter [:>] iunmap <Tab>
|
|
||||||
au CmdwinEnter [:>] nunmap <Tab>
|
|
||||||
You could put these lines in your vimrc file.
|
|
||||||
|
|
||||||
While in the command-line window you cannot use the mouse to put the cursor in
|
|
||||||
another window, or drag statuslines of other windows. You can drag the
|
|
||||||
statusline of the command-line window itself and the statusline above it.
|
|
||||||
Thus you can resize the command-line window, but not others.
|
|
||||||
|
|
||||||
|
|
||||||
AUTOCOMMANDS
|
|
||||||
|
|
||||||
Two autocommand events are used: |CmdwinEnter| and |CmdwinLeave|. Since this
|
|
||||||
window is of a special type, the WinEnter, WinLeave, BufEnter and BufLeave
|
|
||||||
events are not triggered. You can use the Cmdwin events to do settings
|
|
||||||
specifically for the command-line window. Be careful not to cause side
|
|
||||||
effects!
|
|
||||||
Example: >
|
|
||||||
:au CmdwinEnter : let b:cpt_save = &cpt | set cpt=v
|
|
||||||
:au CmdwinLeave : let &cpt = b:cpt_save
|
|
||||||
This sets 'complete' to use command-line completion in Insert mode for CTRL-N.
|
|
||||||
Another example: >
|
|
||||||
:au CmdwinEnter [/?] startinsert
|
|
||||||
This will make Vim start in Insert mode in the command-line window.
|
|
||||||
|
|
||||||
*cmdwin-char*
|
|
||||||
The character used for the pattern indicates the type of command-line:
|
|
||||||
: normal Ex command
|
|
||||||
> debug mode command |debug-mode|
|
|
||||||
/ forward search string
|
|
||||||
? backward search string
|
|
||||||
= expression for "= |expr-register|
|
|
||||||
@ string for |input()|
|
|
||||||
- text for |:insert| or |:append|
|
|
||||||
|
|
||||||
vim:tw=78:ts=8:ft=help:norl:
|
|
||||||
@@ -1,135 +0,0 @@
|
|||||||
*debugger.txt* For Vim version 6.3. Last change: 2001 Dec 22
|
|
||||||
|
|
||||||
|
|
||||||
VIM REFERENCE MANUAL by Gordon Prieur
|
|
||||||
|
|
||||||
|
|
||||||
Debugger Support Features *debugger-support*
|
|
||||||
|
|
||||||
1. Debugger Features |debugger-features|
|
|
||||||
2. Vim Compile Options |debugger-compilation|
|
|
||||||
3. Integrated Debuggers |debugger-integration|
|
|
||||||
|
|
||||||
{Vi does not have any of these features}
|
|
||||||
|
|
||||||
==============================================================================
|
|
||||||
1. Debugger Features *debugger-features*
|
|
||||||
|
|
||||||
The following features are available for an integration with a debugger or
|
|
||||||
an Integrated Programming Environment (IPE) or Integrated Development
|
|
||||||
Environment (IDE):
|
|
||||||
|
|
||||||
Alternate Command Input |alt-input|
|
|
||||||
Debug Signs |debug-signs|
|
|
||||||
Debug Source Highlight |debug-highlight|
|
|
||||||
Message Footer |gui-footer|
|
|
||||||
Balloon Evaluation |balloon-eval|
|
|
||||||
|
|
||||||
These features were added specifically for use in the Motif version of gvim.
|
|
||||||
However, the |alt-input| and |debug-highlight| were written to be usable in
|
|
||||||
both vim and gvim. Some of the other features could be used in the non-GUI
|
|
||||||
vim with slight modifications. However, I did not do this nor did I test the
|
|
||||||
reliability of building for vim or non Motif GUI versions.
|
|
||||||
|
|
||||||
|
|
||||||
1.1 Alternate Command Input *alt-input*
|
|
||||||
|
|
||||||
For Vim to work with a debugger there must be at least an input connection
|
|
||||||
with a debugger or external tool. In many cases there will also be an output
|
|
||||||
connection but this isn't absolutely necessary.
|
|
||||||
|
|
||||||
The purpose of the input connection is to let the external debugger send
|
|
||||||
commands to Vim. The commands sent by the debugger should give the debugger
|
|
||||||
enough control to display the current debug environment and state.
|
|
||||||
|
|
||||||
The current implementation is based on the X Toolkit dispatch loop and the
|
|
||||||
XtAddInput() function call.
|
|
||||||
|
|
||||||
|
|
||||||
1.2 Debug Signs *debug-signs*
|
|
||||||
|
|
||||||
Many debuggers mark specific lines by placing a small sign or color highlight
|
|
||||||
on the line. The |:sign| command lets the debugger set this graphic mark. Some
|
|
||||||
examples where this feature would be used would be a debugger showing an arrow
|
|
||||||
representing the Program Counter (PC) of the program being debugged. Another
|
|
||||||
example would be a small stop sign for a line with a breakpoint. These visible
|
|
||||||
highlights let the user keep track of certain parts of the state of the
|
|
||||||
debugger.
|
|
||||||
|
|
||||||
This feature can be used with more than debuggers, too. An IPE can use a sign
|
|
||||||
to highlight build errors, searched text, or other things. The sign feature
|
|
||||||
can also work together with the |debug-highlight| to ensure the mark is
|
|
||||||
highly visible.
|
|
||||||
|
|
||||||
Debug signs are defined and placed using the |:sign| command.
|
|
||||||
|
|
||||||
|
|
||||||
1.3 Debug Source Highlight *debug-highlight*
|
|
||||||
|
|
||||||
This feature allows a line to have a predominant highlight. The highlight is
|
|
||||||
intended to make a specific line stand out. The highlight could be made to
|
|
||||||
work for both vim and gvim, whereas the debug sign is, in most cases, limited
|
|
||||||
to gvim. The one exception to this is Sun Microsystem's dtterm. The dtterm
|
|
||||||
from Sun has a "sign gutter" for showing signs.
|
|
||||||
|
|
||||||
|
|
||||||
1.4 Message Footer *gui-footer*
|
|
||||||
|
|
||||||
The message footer can be used to display messages from a debugger or IPE. It
|
|
||||||
can also be used to display menu and toolbar tips. The footer area is at the
|
|
||||||
bottom of the GUI window, below the line used to display colon commands.
|
|
||||||
|
|
||||||
The display of the footer is controlled by the 'guioptions' letter 'F'.
|
|
||||||
|
|
||||||
|
|
||||||
1.5 Balloon Evaluation *balloon-eval*
|
|
||||||
|
|
||||||
This feature allows a debugger, or other external tool, to display dynamic
|
|
||||||
information based on where the mouse is pointing. The purpose of this feature
|
|
||||||
was to allow Sun's Visual WorkShop debugger to display expression evaluations.
|
|
||||||
However, the feature was implemented in as general a manner as possible and
|
|
||||||
could be used for displaying other information as well.
|
|
||||||
|
|
||||||
The Balloon Evaluation has some settable parameters too. The font list and
|
|
||||||
colors can be set via X resources (XmNballoonEvalFontList,
|
|
||||||
XmNballoonEvalBackground, and XmNballoonEvalForeground).
|
|
||||||
The 'balloondelay' option sets the delay before an attempt is made to show a
|
|
||||||
balloon.
|
|
||||||
The 'ballooneval' option needs to be set to switch it on.
|
|
||||||
|
|
||||||
Balloon evaluation is only available when compiled with the |+balloon_eval|
|
|
||||||
and |+sun_workshop| features.
|
|
||||||
|
|
||||||
The Balloon evaluation functions are also used to show a tooltip for the
|
|
||||||
toolbar. The 'ballooneval' option does not need to be set for this. But the
|
|
||||||
other settings apply.
|
|
||||||
|
|
||||||
==============================================================================
|
|
||||||
2. Vim Compile Options *debugger-compilation*
|
|
||||||
|
|
||||||
The debugger features were added explicitly for use with Sun's Visual
|
|
||||||
WorkShop Integrated Programming Environment (ipe). However, they were done
|
|
||||||
in as generic a manner as possible so that integration with other debuggers
|
|
||||||
could also use some or all of the tools used with Sun's ipe.
|
|
||||||
|
|
||||||
The following compile time preprocessor variables control the features:
|
|
||||||
|
|
||||||
Alternate Command Input ALT_X_INPUT
|
|
||||||
Debug Glyphs FEAT_SIGNS
|
|
||||||
Debug Highlights FEAT_SIGNS
|
|
||||||
Message Footer FEAT_FOOTER
|
|
||||||
Balloon Evaluation FEAT_BEVAL
|
|
||||||
|
|
||||||
The first integration with a full IPE/IDE was with Sun Visual WorkShop. To
|
|
||||||
compile a gvim which interfaces with VWS set the following flag, which sets
|
|
||||||
all the above flags:
|
|
||||||
|
|
||||||
Sun Visual WorkShop FEAT_SUN_WORKSHOP
|
|
||||||
|
|
||||||
==============================================================================
|
|
||||||
3. Integrated Debuggers *debugger-integration*
|
|
||||||
|
|
||||||
Currently the only fully integrated debugger/IPE/IDE is Sun's Visual WorkShop
|
|
||||||
Integrated Programming Environment.
|
|
||||||
|
|
||||||
vim:tw=78:sw=4:ts=8:ft=help:norl:
|
|
||||||
@@ -1,384 +0,0 @@
|
|||||||
*develop.txt* For Vim version 6.3. Last change: 2004 Jan 17
|
|
||||||
|
|
||||||
|
|
||||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
|
||||||
|
|
||||||
|
|
||||||
Development of Vim. *development*
|
|
||||||
|
|
||||||
This text is important for those who want to be involved in further developing
|
|
||||||
Vim.
|
|
||||||
|
|
||||||
1. Design goals |design-goals|
|
|
||||||
2. Coding style |coding-style|
|
|
||||||
3. Design decisions |design-decisions|
|
|
||||||
4. Assumptions |design-assumptions|
|
|
||||||
|
|
||||||
See the file README.txt in the "src" directory for an overview of the source
|
|
||||||
code.
|
|
||||||
|
|
||||||
Vim is open source software. Everybody is encouraged to contribute to help
|
|
||||||
improving Vim. For sending patches a context diff "diff -c" is preferred.
|
|
||||||
Also see http://www.vim.org/tips/tip.php?tip_id=618.
|
|
||||||
|
|
||||||
==============================================================================
|
|
||||||
1. Design goals *design-goals*
|
|
||||||
|
|
||||||
Most important things come first (roughly).
|
|
||||||
|
|
||||||
Note that quite a few items are contradicting. This is intentional. A
|
|
||||||
balance must be found between them.
|
|
||||||
|
|
||||||
|
|
||||||
VIM IS... VI COMPATIBLE *design-compatible*
|
|
||||||
|
|
||||||
First of all, it should be possible to use Vim as a drop-in replacement for
|
|
||||||
Vi. When the user wants to, he can use Vim in compatible mode and hardly
|
|
||||||
notice any difference with the original Vi.
|
|
||||||
|
|
||||||
Exceptions:
|
|
||||||
- We don't reproduce obvious Vi bugs in Vim.
|
|
||||||
- There are different versions of Vi. I am using Version 3.7 (6/7/85) as a
|
|
||||||
reference. But support for other versions is also included when possible.
|
|
||||||
The Vi part of POSIX is not considered a definitive source.
|
|
||||||
- Vim adds new commands, you cannot rely on some command to fail because it
|
|
||||||
didn't exist in Vi.
|
|
||||||
- Vim will have a lot of features that Vi doesn't have. Going back from Vim
|
|
||||||
to Vi will be a problem, this cannot be avoided.
|
|
||||||
- Some things are hardly ever used (open mode, sending an e-mail when
|
|
||||||
crashing, etc.). Those will only be included when someone has a good reason
|
|
||||||
why it should be included and it's not too much work.
|
|
||||||
- For some items it is debatable whether Vi compatibility should be
|
|
||||||
maintained. There will be an option flag for these.
|
|
||||||
|
|
||||||
|
|
||||||
VIM IS... IMPROVED *design-improved*
|
|
||||||
|
|
||||||
The IMproved bits of Vim should make it a better Vi, without becoming a
|
|
||||||
completely different editor. Extensions are done with a "Vi spirit".
|
|
||||||
- Use the keyboard as much as feasible. The mouse requires a third hand,
|
|
||||||
which we don't have. Many terminals don't have a mouse.
|
|
||||||
- When the mouse is used anyway, avoid the need to switch back to the
|
|
||||||
keyboard. Avoid mixing mouse and keyboard handling.
|
|
||||||
- Add commands and options in a consistent way. Otherwise people will have a
|
|
||||||
hard time finding and remembering them. Keep in mind that more commands and
|
|
||||||
options will be added later.
|
|
||||||
- A feature that people do not know about is a useless feature. Don't add
|
|
||||||
obscure features, or at least add hints in documentation that they exists.
|
|
||||||
- Minimize using CTRL and other modifiers, they are more difficult to type.
|
|
||||||
- There are many first-time and inexperienced Vim users. Make it easy for
|
|
||||||
them to start using Vim and learn more over time.
|
|
||||||
- There is no limit to the features that can be added. Selecting new features
|
|
||||||
is one based on (1) what users ask for, (2) how much effort it takes to
|
|
||||||
implement and (3) someone actually implementing it.
|
|
||||||
|
|
||||||
|
|
||||||
VIM IS... MULTI PLATFORM *design-multi-platform*
|
|
||||||
|
|
||||||
Vim tries to help as many users on as many platforms as possible.
|
|
||||||
- Support many kinds of terminals. The minimal demands are cursor positioning
|
|
||||||
and clear-screen. Commands should only use key strokes that most keyboards
|
|
||||||
have. Support all the keys on the keyboard for mapping.
|
|
||||||
- Support many platforms. A condition is that there is someone willing to do
|
|
||||||
Vim development on that platform, and it doesn't mean messing up the code.
|
|
||||||
- Support many compilers and libraries. Not everybody is able or allowed to
|
|
||||||
install another compiler or GUI library.
|
|
||||||
- People switch from one platform to another, and from GUI to terminal
|
|
||||||
version. Features should be present in all versions, or at least in as many
|
|
||||||
as possible with a reasonable effort. Try to avoid that users must switch
|
|
||||||
between platforms to accomplish their work efficiently.
|
|
||||||
- That a feature is not possible on some platforms, or only possible on one
|
|
||||||
platform, does not mean it cannot be implemented. [This intentionally
|
|
||||||
contradicts the previous item, these two must be balanced.]
|
|
||||||
|
|
||||||
|
|
||||||
VIM IS... WELL DOCUMENTED *design-documented*
|
|
||||||
|
|
||||||
- A feature that isn't documented is a useless feature. A patch for a new
|
|
||||||
feature must include the documentation.
|
|
||||||
- Documentation should be comprehensive and understandable. Using examples is
|
|
||||||
recommended.
|
|
||||||
- Don't make the text unnecessarily long. Less documentation means that an
|
|
||||||
item is easier to find.
|
|
||||||
|
|
||||||
|
|
||||||
VIM IS... HIGH SPEED AND SMALL IN SIZE *design-speed-size*
|
|
||||||
|
|
||||||
Using Vim must not be a big attack on system resources. Keep it small and
|
|
||||||
fast.
|
|
||||||
- Computers are becoming faster and bigger each year. Vim can grow too, but
|
|
||||||
no faster than computers are growing. Keep Vim usable on older systems.
|
|
||||||
- Many users start Vim from a shell very often. Startup time must be short.
|
|
||||||
- Commands must work efficiently. The time they consume must be as small as
|
|
||||||
possible. Useful commands may take longer.
|
|
||||||
- Don't forget that some people use Vim over a slow connection. Minimize the
|
|
||||||
communication overhead.
|
|
||||||
- Items that add considerably to the size and are not used by many people
|
|
||||||
should be a feature that can be disabled.
|
|
||||||
- Vim is a component among other components. Don't turn it into a massive
|
|
||||||
application, but have it work well together with other programs.
|
|
||||||
|
|
||||||
|
|
||||||
VIM IS... MAINTAINABLE *design-maintain*
|
|
||||||
|
|
||||||
- The source code should not become a mess. It should be reliable code.
|
|
||||||
- Use the same layout in all files to make it easy to read |coding-style|.
|
|
||||||
- Use comments in a useful way!
|
|
||||||
- Porting to another platform should be made easy, without having to change
|
|
||||||
too much platform-independent code.
|
|
||||||
- Use the object-oriented spirit: Put data and code together. Minimize the
|
|
||||||
knowledge spread to other parts of the code.
|
|
||||||
|
|
||||||
|
|
||||||
VIM IS... FLEXIBLE *design-flexible*
|
|
||||||
|
|
||||||
Vim should make it easy for users to work in their preferred styles rather
|
|
||||||
than coercing its users into particular patterns of work. This can be for
|
|
||||||
items with a large impact (e.g., the 'compatible' option) or for details. The
|
|
||||||
defaults are carefully chosen such that most users will enjoy using Vim as it
|
|
||||||
is. Commands and options can be used to adjust Vim to the desire of the user
|
|
||||||
and its environment.
|
|
||||||
|
|
||||||
|
|
||||||
VIM IS... NOT *design-not*
|
|
||||||
|
|
||||||
- Vim is not a shell or an Operating System. You will not be able to run a
|
|
||||||
shell inside Vim or use it to control a debugger. This should work the
|
|
||||||
other way around: Use Vim as a component from a shell or in an IDE.
|
|
||||||
A satirical way to say this: "Unlike Emacs, Vim does not attempt to include
|
|
||||||
everything but the kitchen sink, but some people say that you can clean one
|
|
||||||
with it. ;-)"
|
|
||||||
- Vim is not a fancy GUI editor that tries to look nice at the cost of
|
|
||||||
being less consistent over all platforms. But functional GUI features are
|
|
||||||
welcomed.
|
|
||||||
|
|
||||||
==============================================================================
|
|
||||||
2. Coding style *coding-style*
|
|
||||||
|
|
||||||
These are the rules to use when making changes to the Vim source code. Please
|
|
||||||
stick to these rules, to keep the sources readable and maintainable.
|
|
||||||
|
|
||||||
This list is not complete. Look in the source code for more examples.
|
|
||||||
|
|
||||||
|
|
||||||
MAKING CHANGES *style-changes*
|
|
||||||
|
|
||||||
The basic steps to make changes to the code:
|
|
||||||
1. Adjust the documentation. Doing this first gives you an impression of how
|
|
||||||
your changes affect the user.
|
|
||||||
2. Make the source code changes.
|
|
||||||
3. Check ../doc/todo.txt if the change affects any listed item.
|
|
||||||
4. Make a patch with "diff -c" against the unmodified code and docs.
|
|
||||||
5. Make a note about what changed and include it with the patch.
|
|
||||||
|
|
||||||
|
|
||||||
USE OF COMMON FUNCTIONS *style-functions*
|
|
||||||
|
|
||||||
Some functions that are common to use, have a special Vim version. Always
|
|
||||||
consider using the Vim version, because they were introduced with a reason.
|
|
||||||
|
|
||||||
NORMAL NAME VIM NAME DIFFERENCE OF VIM VERSION
|
|
||||||
free() vim_free() Checks for freeing NULL
|
|
||||||
malloc() alloc() Checks for out of memory situation
|
|
||||||
malloc() lalloc() Like alloc(), but has long argument
|
|
||||||
strcpy() STRCPY() Includes cast to (char *), for char_u * args
|
|
||||||
strchr() vim_strchr() Accepts special characters
|
|
||||||
strrchr() vim_strrchr() Accepts special characters
|
|
||||||
isspace() vim_isspace() Can handle characters > 128
|
|
||||||
iswhite() vim_iswhite() Only TRUE for Tab and space
|
|
||||||
memcpy() vim_memmove() Handles overlapped copies
|
|
||||||
bcopy() vim_memmove() Handles overlapped copies
|
|
||||||
memset() vim_memset() Uniform for all systems
|
|
||||||
|
|
||||||
|
|
||||||
NAMES *style-names*
|
|
||||||
|
|
||||||
Function names can not be more than 31 characters long (because of VMS).
|
|
||||||
|
|
||||||
Don't use "delete" as a variable name, C++ doesn't like it.
|
|
||||||
|
|
||||||
Because of the requirement that Vim runs on as many systems as possible, we
|
|
||||||
need to avoid using names that are already defined by the system. This is a
|
|
||||||
list of names that are known to cause trouble. The name is given as a regexp
|
|
||||||
pattern.
|
|
||||||
|
|
||||||
is.*() POSIX, ctype.h
|
|
||||||
to.*() POSIX, ctype.h
|
|
||||||
|
|
||||||
d_.* POSIX, dirent.h
|
|
||||||
l_.* POSIX, fcntl.h
|
|
||||||
gr_.* POSIX, grp.h
|
|
||||||
pw_.* POSIX, pwd.h
|
|
||||||
sa_.* POSIX, signal.h
|
|
||||||
mem.* POSIX, string.h
|
|
||||||
str.* POSIX, string.h
|
|
||||||
wcs.* POSIX, string.h
|
|
||||||
st_.* POSIX, stat.h
|
|
||||||
tms_.* POSIX, times.h
|
|
||||||
tm_.* POSIX, time.h
|
|
||||||
c_.* POSIX, termios.h
|
|
||||||
MAX.* POSIX, limits.h
|
|
||||||
__.* POSIX, system
|
|
||||||
_[A-Z].* POSIX, system
|
|
||||||
E[A-Z0-9]* POSIX, errno.h
|
|
||||||
|
|
||||||
*_t POSIX, for typedefs. Use *_T instead.
|
|
||||||
|
|
||||||
wait don't use as argument to a function, conflicts with types.h
|
|
||||||
index shadows global declaration
|
|
||||||
time shadows global declaration
|
|
||||||
new C++ reserved keyword
|
|
||||||
try Borland C++ doesn't like it to be used as a variable.
|
|
||||||
|
|
||||||
basename() GNU string function
|
|
||||||
dirname() GNU string function
|
|
||||||
get_env_value() Linux system function
|
|
||||||
|
|
||||||
|
|
||||||
VARIOUS *style-various*
|
|
||||||
|
|
||||||
Typedef'ed names should end in "_t": >
|
|
||||||
typedef int some_t;
|
|
||||||
Define'ed names should be uppercase: >
|
|
||||||
#define SOME_THING
|
|
||||||
Features always start with "FEAT_": >
|
|
||||||
#define FEAT_FOO
|
|
||||||
|
|
||||||
Don't use '\"', some compilers can't handle it. '"' works fine.
|
|
||||||
|
|
||||||
Don't use:
|
|
||||||
#if HAVE_SOME
|
|
||||||
Some compilers can't handle that and complain that "HAVE_SOME" is not defined.
|
|
||||||
Use
|
|
||||||
#ifdef HAVE_SOME
|
|
||||||
or
|
|
||||||
#if defined(HAVE_SOME)
|
|
||||||
|
|
||||||
|
|
||||||
STYLE *style-examples*
|
|
||||||
|
|
||||||
General rule: One statement per line.
|
|
||||||
|
|
||||||
Wrong: if (cond) a = 1;
|
|
||||||
|
|
||||||
OK: if (cond)
|
|
||||||
a = 1;
|
|
||||||
|
|
||||||
Wrong: while (cond);
|
|
||||||
|
|
||||||
OK: while (cond)
|
|
||||||
;
|
|
||||||
|
|
||||||
Wrong: do a = 1; while (cond);
|
|
||||||
|
|
||||||
OK: do
|
|
||||||
a = 1;
|
|
||||||
while (cond);
|
|
||||||
|
|
||||||
|
|
||||||
Functions start with:
|
|
||||||
|
|
||||||
Wrong: int function_name(int arg1, int arg2)
|
|
||||||
|
|
||||||
OK: /*
|
|
||||||
* Explanation of what this function is used for.
|
|
||||||
*
|
|
||||||
* Return value explanation.
|
|
||||||
*/
|
|
||||||
int
|
|
||||||
function_name(arg1, arg2)
|
|
||||||
int arg1; /* short comment about arg1 */
|
|
||||||
int arg2; /* short comment about arg2 */
|
|
||||||
{
|
|
||||||
int local; /* comment about local */
|
|
||||||
|
|
||||||
local = arg1 * arg2;
|
|
||||||
|
|
||||||
NOTE: Don't use ANSI style function declarations. A few people still have to
|
|
||||||
use a compiler that doesn't support it.
|
|
||||||
|
|
||||||
|
|
||||||
SPACES AND PUNCTUATION *style-spaces*
|
|
||||||
|
|
||||||
No space between a function name and the bracket:
|
|
||||||
|
|
||||||
Wrong: func (arg);
|
|
||||||
OK: func(arg);
|
|
||||||
|
|
||||||
Do use a space after if, while, switch, etc.
|
|
||||||
|
|
||||||
Wrong: if(arg) for(;;)
|
|
||||||
OK: if (arg) for (;;)
|
|
||||||
|
|
||||||
Use a space after a comma and semicolon:
|
|
||||||
|
|
||||||
Wrong: func(arg1,arg2); for (i = 0;i < 2;++i)
|
|
||||||
OK: func(arg1, arg2); for (i = 0; i < 2; ++i)
|
|
||||||
|
|
||||||
Use a space before and after '=', '+', '/', etc.
|
|
||||||
|
|
||||||
Wrong: var=a*5;
|
|
||||||
OK: var = a * 5;
|
|
||||||
|
|
||||||
In general: Use empty lines to group lines of code together. Put a comment
|
|
||||||
just above the group of lines. This makes it more easy to quickly see what is
|
|
||||||
being done.
|
|
||||||
|
|
||||||
OK: /* Prepare for building the table. */
|
|
||||||
get_first_item();
|
|
||||||
table_idx = 0;
|
|
||||||
|
|
||||||
/* Build the table */
|
|
||||||
while (has_item())
|
|
||||||
table[table_idx++] = next_item();
|
|
||||||
|
|
||||||
/* Finish up. */
|
|
||||||
cleanup_items();
|
|
||||||
generate_hash(table);
|
|
||||||
|
|
||||||
==============================================================================
|
|
||||||
3. Design decisions *design-decisions*
|
|
||||||
|
|
||||||
Folding
|
|
||||||
|
|
||||||
Several forms of folding should be possible for the same buffer. For example,
|
|
||||||
have one window that shows the text with function bodies folded, another
|
|
||||||
window that shows a function body.
|
|
||||||
|
|
||||||
Folding is a way to display the text. It should not change the text itself.
|
|
||||||
Therefore the folding has been implemented as a filter between the text stored
|
|
||||||
in a buffer (buffer lines) and the text displayed in a window (logical lines).
|
|
||||||
|
|
||||||
|
|
||||||
Naming the window
|
|
||||||
|
|
||||||
The word "window" is commonly used for several things: A window on the screen,
|
|
||||||
the xterm window, a window inside Vim to view a buffer.
|
|
||||||
To avoid confusion, other items that are sometimes called window have been
|
|
||||||
given another name. Here is an overview of the related items:
|
|
||||||
|
|
||||||
screen The whole display. For the GUI it's something like 1024x768
|
|
||||||
pixels. The Vim shell can use the whole screen or part of it.
|
|
||||||
shell The Vim application. This can cover the whole screen (e.g.,
|
|
||||||
when running in a console) or part of it (xterm or GUI).
|
|
||||||
window View on a buffer. There can be several windows in Vim,
|
|
||||||
together with the command line, menubar, toolbar, etc. they
|
|
||||||
fit in the shell.
|
|
||||||
|
|
||||||
|
|
||||||
To be continued...
|
|
||||||
|
|
||||||
==============================================================================
|
|
||||||
4. Assumptions *design-assumptions*
|
|
||||||
|
|
||||||
Size of variables:
|
|
||||||
char 8 bit signed
|
|
||||||
char_u 8 bit unsigned
|
|
||||||
int 16, 32 or 64 bit signed
|
|
||||||
unsigned 16, 32 or 64 bit unsigned
|
|
||||||
long 32 or 64 bit signed, can hold a pointer
|
|
||||||
|
|
||||||
Note that some compilers cannot handle long lines or strings. The C89
|
|
||||||
standard specifies a limit of 509 characters.
|
|
||||||
|
|
||||||
vim:tw=78:ts=8:ft=help:norl:
|
|
||||||
@@ -1,371 +0,0 @@
|
|||||||
*diff.txt* For Vim version 6.3. Last change: 2004 May 01
|
|
||||||
|
|
||||||
|
|
||||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
|
||||||
|
|
||||||
|
|
||||||
*diff* *vimdiff* *gvimdiff* *diff-mode*
|
|
||||||
This file describes the +diff feature: Showing differences between two or
|
|
||||||
three versions of the same file.
|
|
||||||
|
|
||||||
The basics are explained in section |08.7| of the user manual.
|
|
||||||
|
|
||||||
1. Starting diff mode |vimdiff|
|
|
||||||
2. Viewing diffs |view-diffs|
|
|
||||||
3. Jumping to diffs |jumpto-diffs|
|
|
||||||
4. Copying diffs |copy-diffs|
|
|
||||||
5. Diff options |diff-options|
|
|
||||||
|
|
||||||
{not in Vi}
|
|
||||||
|
|
||||||
==============================================================================
|
|
||||||
1. Starting diff mode
|
|
||||||
|
|
||||||
The easiest way to start editing in diff mode is with the "vimdiff" command.
|
|
||||||
This starts Vim as usual, and additionally sets up for viewing the differences
|
|
||||||
between the arguments. >
|
|
||||||
|
|
||||||
vimdiff file1 file2 [file3 [file4]]
|
|
||||||
|
|
||||||
This is equivalent to: >
|
|
||||||
|
|
||||||
vim -d file1 file2 [file3 [file4]]
|
|
||||||
|
|
||||||
You may also use "gvimdiff" or "vim -d -g". The GUI is started then.
|
|
||||||
You may also use "viewdiff" or "gviewdiff". Vim starts in readonly mode then.
|
|
||||||
"r" may be prepended for restricted mode (see |-Z|).
|
|
||||||
|
|
||||||
The second and following arguments may also be a directory name. Vim will
|
|
||||||
then append the file name of the first argument to the directory name to find
|
|
||||||
the file.
|
|
||||||
|
|
||||||
This only works when a standard "diff" command is available. See 'diffexpr'.
|
|
||||||
|
|
||||||
What happens is that Vim opens a window for each of the files. This is like
|
|
||||||
using the |-O| argument. This uses vertical splits. If you prefer horizontal
|
|
||||||
splits add the |-o| argument: >
|
|
||||||
|
|
||||||
vimdiff -o file1 file2 [file3]
|
|
||||||
|
|
||||||
In each of the edited files these options are set:
|
|
||||||
|
|
||||||
'diff' on
|
|
||||||
'scrollbind' on
|
|
||||||
'scrollopt' includes "hor"
|
|
||||||
'wrap' off
|
|
||||||
'foldmethod' "diff"
|
|
||||||
'foldcolumn' 2
|
|
||||||
|
|
||||||
These options are set local to the window. When editing another file they are
|
|
||||||
reset to the global value.
|
|
||||||
|
|
||||||
The differences shown are actually the differences in the buffer. Thus if you
|
|
||||||
make changes after loading a file, these will be included in the displayed
|
|
||||||
diffs. You might have to do ":diffupdate" now and then, not all changes are
|
|
||||||
immediately taken into account.
|
|
||||||
|
|
||||||
In your .vimrc file you could do something special when Vim was started in
|
|
||||||
diff mode. You could use a construct like this: >
|
|
||||||
|
|
||||||
if &diff
|
|
||||||
setup for diff mode
|
|
||||||
else
|
|
||||||
setup for non-diff mode
|
|
||||||
endif
|
|
||||||
|
|
||||||
While already in Vim you can start diff mode in three ways.
|
|
||||||
|
|
||||||
*E98*
|
|
||||||
:diffsplit {filename} *:diffs* *:diffsplit*
|
|
||||||
Open a new window on the file {filename}. The options are set
|
|
||||||
as for "vimdiff" for the current and the newly opened window.
|
|
||||||
Also see 'diffexpr'.
|
|
||||||
|
|
||||||
*:difft* *:diffthis*
|
|
||||||
:diffthis Make the current window part of the diff windows. This sets
|
|
||||||
the option like for "vimdiff".
|
|
||||||
|
|
||||||
:diffpatch {patchfile} *:diffp* *:diffpatch*
|
|
||||||
Use the current buffer, patch it with the diff found in
|
|
||||||
{patchfile} and open a buffer on the result. The options are
|
|
||||||
set as for "vimdiff".
|
|
||||||
{patchfile} can be in any format that the "patch" program
|
|
||||||
understands or 'patchexpr' can handle.
|
|
||||||
Note that {patchfile} should only contain a diff for one file,
|
|
||||||
the current file. If {patchfile} contains diffs for other
|
|
||||||
files as well, the results are unpredictable. Vim changes
|
|
||||||
directory to /tmp to avoid files in the current directory
|
|
||||||
accidentally being patched. But it may still result in
|
|
||||||
various ".rej" files to be created. And when absolute path
|
|
||||||
names are present these files may get patched anyway.
|
|
||||||
|
|
||||||
To make these commands use a vertical split, prepend |:vertical|. Examples: >
|
|
||||||
|
|
||||||
:vert diffsplit main.c~
|
|
||||||
:vert diffpatch /tmp/diff
|
|
||||||
<
|
|
||||||
*E96*
|
|
||||||
There can be up to four buffers with 'diff' set.
|
|
||||||
|
|
||||||
Since the option values are remembered with the buffer, you can edit another
|
|
||||||
file for a moment and come back to the same file and be in diff mode again.
|
|
||||||
If you don't want diff mode, reset the 'diff' option. And you probably want
|
|
||||||
to get rid of the fold column: >
|
|
||||||
|
|
||||||
:set nodiff foldcolumn=0
|
|
||||||
|
|
||||||
==============================================================================
|
|
||||||
2. Viewing diffs *view-diffs*
|
|
||||||
|
|
||||||
The effect is that the diff windows show the same text, with the differences
|
|
||||||
highlighted. When scrolling the text, the 'scrollbind' option will make the
|
|
||||||
text in other windows to be scrolled as well. With vertical splits the text
|
|
||||||
should be aligned properly.
|
|
||||||
|
|
||||||
The alignment of text will go wrong when:
|
|
||||||
- 'wrap' is on, some lines will be wrapped and occupy two or more screen
|
|
||||||
lines
|
|
||||||
- folds are open in one window but not another
|
|
||||||
- 'scrollbind' is off
|
|
||||||
- changes have been made to the text
|
|
||||||
- "filler" is not present in 'diffopt', deleted/inserted lines makes the
|
|
||||||
alignment go wrong
|
|
||||||
|
|
||||||
All the buffers edited in a window where the 'diff' option is set will join in
|
|
||||||
the diff. This is also possible for hidden buffers. They must have been
|
|
||||||
edited in a window first for this to be possible.
|
|
||||||
|
|
||||||
Since 'diff' is a window-local option, it's possible to view the same buffer
|
|
||||||
in diff mode in one window and "normal" in another window. It is also
|
|
||||||
possible to view the changes you have made to a buffer, but since Vim doesn't
|
|
||||||
allow having two buffers for the same file, you need to make a copy of the
|
|
||||||
original file and diff with that. For example: >
|
|
||||||
:!cp % tempfile
|
|
||||||
:diffsplit tempfile
|
|
||||||
|
|
||||||
A buffer that is unloaded cannot be used for the diff. But it does work for
|
|
||||||
hidden buffers. You can use ":hide" to close a window without unloading the
|
|
||||||
buffer.
|
|
||||||
|
|
||||||
|
|
||||||
*:diffu* *:diffupdate*
|
|
||||||
Vim attempts to keep the differences updated when you make changes to the
|
|
||||||
text. This mostly takes care of inserted and deleted lines. Changes within a
|
|
||||||
line and more complicated changes do not cause the differences to be updated.
|
|
||||||
To force the differences to be updated use: >
|
|
||||||
|
|
||||||
:diffupdate
|
|
||||||
|
|
||||||
|
|
||||||
Vim will show filler lines for lines that are missing in one window but are
|
|
||||||
present in another. These lines were inserted in another file or deleted in
|
|
||||||
this file. Removing "filler" from the 'diffopt' option will make Vim not
|
|
||||||
display these filler lines.
|
|
||||||
|
|
||||||
|
|
||||||
Folds are used to hide the text that wasn't changed. See |folding| for all
|
|
||||||
the commands that can be used with folds.
|
|
||||||
|
|
||||||
The context of lines above a difference that are not included in the fold can
|
|
||||||
be set with the 'diffopt' option. For example, to set the context to three
|
|
||||||
lines: >
|
|
||||||
|
|
||||||
:set diffopt=filler,context:3
|
|
||||||
|
|
||||||
|
|
||||||
The diffs are highlighted with these groups:
|
|
||||||
|
|
||||||
|hl-DiffAdd| DiffAdd Added (inserted) lines. These lines exist in
|
|
||||||
this buffer but not in another.
|
|
||||||
|hl-DiffChange| DiffChange Changed lines.
|
|
||||||
|hl-DiffText| DiffText Changed text inside a Changed line. Vim
|
|
||||||
finds the first character that is different,
|
|
||||||
and the last character that is different
|
|
||||||
(searching from the end of the line). The
|
|
||||||
text in between is highlighted. This means
|
|
||||||
that parts in the middle that are still the
|
|
||||||
same are highlighted anyway.
|
|
||||||
|hl-DiffDelete| DiffDelete Deleted lines. Also called filler lines,
|
|
||||||
because they don't really exist in this
|
|
||||||
buffer.
|
|
||||||
|
|
||||||
==============================================================================
|
|
||||||
3. Jumping to diffs *jumpto-diffs*
|
|
||||||
|
|
||||||
Two commands can be used to jump to diffs:
|
|
||||||
*[c*
|
|
||||||
[c Jump backwards to the previous start of a change.
|
|
||||||
When a count is used, do it that many times.
|
|
||||||
*]c*
|
|
||||||
]c Jump forwards to the next start of a change.
|
|
||||||
When a count is used, do it that many times.
|
|
||||||
|
|
||||||
It is an error if there is no change for the cursor to move to.
|
|
||||||
|
|
||||||
==============================================================================
|
|
||||||
4. Diff copying *copy-diffs* *E99* *E100* *E101* *E102* *E103*
|
|
||||||
|
|
||||||
There are two commands to copy text from one buffer to another. The result is
|
|
||||||
that the buffers will be equal within the specified range.
|
|
||||||
|
|
||||||
*:diffg* *:diffget*
|
|
||||||
:[range]diffg[et] [bufspec]
|
|
||||||
Modify the current buffer to undo difference with another
|
|
||||||
buffer. If [bufspec] is given, that buffer is used.
|
|
||||||
Otherwise this only works if there is one other buffer in diff
|
|
||||||
mode.
|
|
||||||
See below for [range].
|
|
||||||
|
|
||||||
*:diffpu* *:diffput*
|
|
||||||
:[range]diffpu[t] [bufspec]
|
|
||||||
Modify another buffer to undo difference with the current
|
|
||||||
buffer. Just like ":diffget" but the other buffer is modified
|
|
||||||
instead of the current one.
|
|
||||||
See below for [range].
|
|
||||||
|
|
||||||
*do*
|
|
||||||
do Same as ":diffget" without argument or range. The "o" stands
|
|
||||||
for "obtain" ("dg" can't be used, it could be the start of
|
|
||||||
"dgg"!).
|
|
||||||
|
|
||||||
*dp*
|
|
||||||
dp Same as ":diffput" without argument or range.
|
|
||||||
|
|
||||||
When no [range] is given, the diff at the cursor position or just above it is
|
|
||||||
affected. When [range] is used, Vim tries to only put or get the specified
|
|
||||||
lines. When there are deleted lines, this may not always be possible.
|
|
||||||
|
|
||||||
There can be deleted lines below the last line of the buffer. When the cursor
|
|
||||||
is on the last line in the buffer and there is no diff above this line, the
|
|
||||||
":diffget" and "do" commands will obtain lines from the other buffer.
|
|
||||||
|
|
||||||
To be able to get those lines from another buffer in a [range] it's allowed to
|
|
||||||
use the last line number plus one. This command gets all diffs from the other
|
|
||||||
buffer: >
|
|
||||||
|
|
||||||
:1,$+1diffget
|
|
||||||
|
|
||||||
Note that deleted lines are displayed, but not counted as text lines. You
|
|
||||||
can't move the cursor into them. To fill the deleted lines with the lines
|
|
||||||
from another buffer use ":diffget" on the line below them.
|
|
||||||
|
|
||||||
The [bufspec] argument above can be a buffer number, a pattern for a buffer
|
|
||||||
name or a part of a buffer name. Examples:
|
|
||||||
|
|
||||||
:diffget Use the other buffer which is in diff mode
|
|
||||||
:diffget 3 Use buffer 3
|
|
||||||
:diffget v2 Use the buffer which matches "v2" and is in
|
|
||||||
diff mode (e.g., "file.c.v2")
|
|
||||||
|
|
||||||
==============================================================================
|
|
||||||
5. Diff options *diff-options*
|
|
||||||
|
|
||||||
Also see |'diffopt'| and the "diff" item of |'fillchars'|.
|
|
||||||
|
|
||||||
|
|
||||||
FINDING THE DIFFERENCES *diff-diffexpr*
|
|
||||||
|
|
||||||
The 'diffexpr' option can be set to use something else than the standard
|
|
||||||
"diff" program to compare two files and find the differences.
|
|
||||||
|
|
||||||
When 'diffexpr' is empty, Vim uses this command to find the differences
|
|
||||||
between file1 and file2: >
|
|
||||||
|
|
||||||
diff file1 file2 > outfile
|
|
||||||
|
|
||||||
The ">" is replaced with the value of 'shellredir'.
|
|
||||||
|
|
||||||
The output of "diff" must be a normal "ed" style diff. Do NOT use a context
|
|
||||||
diff. This example explains the format that Vim expects: >
|
|
||||||
|
|
||||||
1a2
|
|
||||||
> bbb
|
|
||||||
4d4
|
|
||||||
< 111
|
|
||||||
7c7
|
|
||||||
< GGG
|
|
||||||
---
|
|
||||||
> ggg
|
|
||||||
|
|
||||||
The "1a2" item appends the line "bbb".
|
|
||||||
The "4d4" item deletes the line "111".
|
|
||||||
The '7c7" item replaces the line "GGG" with "ggg".
|
|
||||||
|
|
||||||
When 'diffexpr' is not empty, Vim evaluates to obtain a diff file in the
|
|
||||||
format mentioned. These variables are set to the file names used:
|
|
||||||
|
|
||||||
v:fname_in original file
|
|
||||||
v:fname_new new version of the same file
|
|
||||||
v:fname_out resulting diff file
|
|
||||||
|
|
||||||
Additionally, 'diffexpr' should take care of "icase" and "iwhite" in the
|
|
||||||
'diffopt' option. 'diffexpr' cannot change the value of 'lines' and
|
|
||||||
'columns'.
|
|
||||||
|
|
||||||
Example (this does almost the same as 'diffexpr' being empty): >
|
|
||||||
|
|
||||||
set diffexpr=MyDiff()
|
|
||||||
function MyDiff()
|
|
||||||
let opt = ""
|
|
||||||
if &diffopt =~ "icase"
|
|
||||||
let opt = opt . "-i "
|
|
||||||
endif
|
|
||||||
if &diffopt =~ "iwhite"
|
|
||||||
let opt = opt . "-b "
|
|
||||||
endif
|
|
||||||
silent execute "!diff -a --binary " . opt . v:fname_in . " " . v:fname_new .
|
|
||||||
\ " > " . v:fname_out
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
The "-a" argument is used to force comparing the files as text, comparing as
|
|
||||||
binaries isn't useful. The "--binary" argument makes the files read in binary
|
|
||||||
mode, so that a CTRL-Z doesn't end the text on DOS.
|
|
||||||
|
|
||||||
*E97*
|
|
||||||
Vim will do a test if the diff output looks alright. If it doesn't, you will
|
|
||||||
get an error message. Possible causes:
|
|
||||||
- The "diff" program cannot be executed.
|
|
||||||
- The "diff" program doesn't produce normal "ed" style diffs (see above).
|
|
||||||
- The 'shell' and associated options are not set correctly. Try if filtering
|
|
||||||
works with a command like ":!sort".
|
|
||||||
- You are using 'diffexpr' and it doesn't work.
|
|
||||||
If it's not clear what the problem is set the 'verbose' option to see more
|
|
||||||
messages.
|
|
||||||
|
|
||||||
|
|
||||||
USING PATCHES *diff-patchexpr*
|
|
||||||
|
|
||||||
The 'patchexpr' option can be set to use something else than the standard
|
|
||||||
"patch" program.
|
|
||||||
|
|
||||||
When 'patchexpr' is empty, Vim will call the "patch" program like this: >
|
|
||||||
|
|
||||||
patch -o outfile origfile < patchfile
|
|
||||||
|
|
||||||
This should work fine with most versions of the "patch" program. Note that a
|
|
||||||
CR in the middle of a line may cause problems, it is seen as a line break.
|
|
||||||
|
|
||||||
If the default doesn't work for you, set the 'patchexpr' to an expression that
|
|
||||||
will have the same effect. These variables are set to the file names used:
|
|
||||||
|
|
||||||
v:fname_in original file
|
|
||||||
v:fname_diff patch file
|
|
||||||
v:fname_out resulting patched file
|
|
||||||
|
|
||||||
Example (this does the same as 'patchexpr' being empty): >
|
|
||||||
|
|
||||||
let patchexpr=MyPatch
|
|
||||||
function MyPatch
|
|
||||||
:call system("patch -o " . v:fname_out . " " . v:fname_in .
|
|
||||||
\ " < " . v:fname_diff)
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
Make sure that using the "patch" program doesn't have unwanted side effects.
|
|
||||||
For example, watch out for additionally generated files, which should be
|
|
||||||
deleted. It should just patch the file and nothing else.
|
|
||||||
Vim will change directory to "/tmp" or another temp directory before
|
|
||||||
evaluating 'patchexpr'. This hopefully avoids that files in the current
|
|
||||||
directory are accidentally patched. Vim will also delete files starting with
|
|
||||||
v:fname_in and ending in ".rej" and ".orig".
|
|
||||||
|
|
||||||
vim:tw=78:ts=8:ft=help:norl:
|
|
||||||
@@ -1,322 +0,0 @@
|
|||||||
*digraph.txt* For Vim version 6.3. Last change: 2001 Sep 03
|
|
||||||
|
|
||||||
|
|
||||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
|
||||||
|
|
||||||
|
|
||||||
Digraphs *digraphs* *Digraphs*
|
|
||||||
|
|
||||||
Digraphs are used to enter characters that normally cannot be entered by
|
|
||||||
an ordinary keyboard. These are mostly accented characters which have the
|
|
||||||
eighth bit set. The digraphs are easier to remember than the decimal number
|
|
||||||
that can be entered with CTRL-V (see |i_CTRL-V|).
|
|
||||||
|
|
||||||
There is a brief introduction on digraphs in the user manual: |24.9|
|
|
||||||
An alternative is using the 'keymap' option.
|
|
||||||
|
|
||||||
1. Defining digraphs |digraphs-define|
|
|
||||||
2. Using digraphs |digraphs-use|
|
|
||||||
3. Default digraphs |digraphs-default|
|
|
||||||
|
|
||||||
{Vi does not have any of these commands}
|
|
||||||
|
|
||||||
==============================================================================
|
|
||||||
1. Defining digraphs *digraphs-define*
|
|
||||||
|
|
||||||
*:dig* *:digraphs*
|
|
||||||
:dig[raphs] show currently defined digraphs.
|
|
||||||
*E104* *E39*
|
|
||||||
:dig[raphs] {char1}{char2} {number} ...
|
|
||||||
Add digraph {char1}{char2} to the list. {number} is
|
|
||||||
the decimal representation of the character.
|
|
||||||
Example: >
|
|
||||||
:digr e: 235 a: 228
|
|
||||||
< Avoid defining a digraph with '_' (underscore) as the
|
|
||||||
first character, it has a special meaning in the
|
|
||||||
future.
|
|
||||||
|
|
||||||
Vim is normally compiled with the |+digraphs| feature. If the feature is
|
|
||||||
disabled, the ":digraph" command will display an error message.
|
|
||||||
|
|
||||||
Example of the output of ":digraphs": >
|
|
||||||
TH Þ 222 ss ß 223 a! à 224 a' á 225 a> â 226 a? ã 227 a: ä 228
|
|
||||||
|
|
||||||
The first two characters in each column are the characters you have to type to
|
|
||||||
enter the digraph.
|
|
||||||
|
|
||||||
In the middle of each column is the resulting character. This may be mangled
|
|
||||||
if you look at it on a system that does not support digraphs or if you print
|
|
||||||
this file.
|
|
||||||
|
|
||||||
The decimal number is the number of the character.
|
|
||||||
|
|
||||||
==============================================================================
|
|
||||||
2. Using digraphs *digraphs-use*
|
|
||||||
|
|
||||||
There are two methods to enter digraphs: *i_digraph*
|
|
||||||
CTRL-K {char1} {char2} or
|
|
||||||
{char1} <BS> {char2}
|
|
||||||
The first is always available; the second only when the 'digraph' option is
|
|
||||||
set.
|
|
||||||
|
|
||||||
If a digraph with {char1}{char2} does not exist, Vim searches for a digraph
|
|
||||||
{char2}{char1}. This helps when you don't remember which character comes
|
|
||||||
first.
|
|
||||||
|
|
||||||
Note that when you enter CTRL-K {char1}, where {char1} is a special key, Vim
|
|
||||||
enters the code for that special key. This is not a digraph.
|
|
||||||
|
|
||||||
Once you have entered the digraph, Vim treats the character like a normal
|
|
||||||
character that occupies only one character in the file and on the screen.
|
|
||||||
Example: >
|
|
||||||
'B' <BS> 'B' will enter the broken '|' character (166)
|
|
||||||
'a' <BS> '>' will enter an 'a' with a circumflex (226)
|
|
||||||
CTRL-K '-' '-' will enter a soft hyphen (173)
|
|
||||||
|
|
||||||
The current digraphs are listed with the ":digraphs" command. Some of the
|
|
||||||
default ones are listed below |digraph-table|.
|
|
||||||
|
|
||||||
For CTRL-K, there is one general digraph: CTRL-K <Space> {char} will enter
|
|
||||||
{char} with the highest bit set. You can use this to enter meta-characters.
|
|
||||||
|
|
||||||
The <Esc> character cannot be part of a digraph. When hitting <Esc>, Vim
|
|
||||||
stops digraph entry and ends Insert mode or Command-line mode, just like
|
|
||||||
hitting an <Esc> out of digraph context. Use CTRL-V 155 to enter meta-ESC
|
|
||||||
(CSI).
|
|
||||||
|
|
||||||
If you accidentally typed an 'a' that should be an 'e', you will type 'a' <BS>
|
|
||||||
'e'. But that is a digraph, so you will not get what you want. To correct
|
|
||||||
this, you will have to type <BS> e again. To avoid this don't set the
|
|
||||||
'digraph' option and use CTRL-K to enter digraphs.
|
|
||||||
|
|
||||||
You may have problems using Vim with characters which have an ASCII value
|
|
||||||
above 128. For example: You insert ue (u-umlaut) and the editor echoes \334
|
|
||||||
in Insert mode. After leaving the Insert mode everything is fine. Note that
|
|
||||||
fmt removes all characters with ASCII codes above 128 from the text being
|
|
||||||
formatted. On some Unix systems this means you have to define the
|
|
||||||
environment-variable LC_CTYPE. If you are using csh, then put the following
|
|
||||||
line in your .cshrc: >
|
|
||||||
setenv LC_CTYPE iso_8859_1
|
|
||||||
|
|
||||||
==============================================================================
|
|
||||||
3. Default digraphs *digraphs-default*
|
|
||||||
|
|
||||||
Vim comes with a set of default digraphs. Check the output of ":digraphs" to
|
|
||||||
see them.
|
|
||||||
|
|
||||||
On most systems Vim uses the same digraphs. They work for the Unicode and
|
|
||||||
ISO-8859-1 character sets. These default digraphs are taken from the RFC1345
|
|
||||||
mnemonics. To make it easy to remember the mnemonic, the second character has
|
|
||||||
a standard meaning:
|
|
||||||
|
|
||||||
char name char meaning ~
|
|
||||||
Exclamation mark ! Grave
|
|
||||||
Apostrophe ' Acute accent
|
|
||||||
Greater-Than sign > Circumflex accent
|
|
||||||
Question Mark ? tilde
|
|
||||||
Hyphen-Minus - Macron
|
|
||||||
Left parenthesis ( Breve
|
|
||||||
Full Stop . Dot Above
|
|
||||||
Colon : Diaeresis
|
|
||||||
Comma , Cedilla
|
|
||||||
Underline _ Underline
|
|
||||||
Solidus / Stroke
|
|
||||||
Quotation mark " Double acute accent
|
|
||||||
Semicolon ; Ogonek
|
|
||||||
Less-Than sign < Caron
|
|
||||||
Zero 0 Ring above
|
|
||||||
Two 2 Hook
|
|
||||||
Nine 9 Horn
|
|
||||||
|
|
||||||
Equals = Cyrillic
|
|
||||||
Asterisk * Greek
|
|
||||||
Percent sign % Greek/Cyrillic special
|
|
||||||
Plus + smalls: Arabic, capitals: Hebrew
|
|
||||||
Three 3 some Latin/Greek/Cyrillic letters
|
|
||||||
Four 4 Bopomofo
|
|
||||||
Five 5 Hiragana
|
|
||||||
Six 6 Katakana
|
|
||||||
|
|
||||||
Example: a: is ä and o: is ö
|
|
||||||
|
|
||||||
These are the RFC1345 digraphs for the one-byte characters. See the output of
|
|
||||||
":digraphs" for the others. The characters above 255 are only available when
|
|
||||||
Vim was compiled with the |+multi_byte| feature.
|
|
||||||
*digraph-table*
|
|
||||||
char digraph hex dec official name ~
|
|
||||||
^@ NU 0x00 0 NULL (NUL)
|
|
||||||
^A SH 0x01 1 START OF HEADING (SOH)
|
|
||||||
^B SX 0x02 2 START OF TEXT (STX)
|
|
||||||
^C EX 0x03 3 END OF TEXT (ETX)
|
|
||||||
^D ET 0x04 4 END OF TRANSMISSION (EOT)
|
|
||||||
^E EQ 0x05 5 ENQUIRY (ENQ)
|
|
||||||
^F AK 0x06 6 ACKNOWLEDGE (ACK)
|
|
||||||
^G BL 0x07 7 BELL (BEL)
|
|
||||||
^H BS 0x08 8 BACKSPACE (BS)
|
|
||||||
^I HT 0x09 9 CHARACTER TABULATION (HT)
|
|
||||||
^@ LF 0x0a 10 LINE FEED (LF)
|
|
||||||
^K VT 0x0b 11 LINE TABULATION (VT)
|
|
||||||
^L FF 0x0c 12 FORM FEED (FF)
|
|
||||||
^M CR 0x0d 13 CARRIAGE RETURN (CR)
|
|
||||||
^N SO 0x0e 14 SHIFT OUT (SO)
|
|
||||||
^O SI 0x0f 15 SHIFT IN (SI)
|
|
||||||
^P DL 0x10 16 DATALINK ESCAPE (DLE)
|
|
||||||
^Q D1 0x11 17 DEVICE CONTROL ONE (DC1)
|
|
||||||
^R D2 0x12 18 DEVICE CONTROL TWO (DC2)
|
|
||||||
^S D3 0x13 19 DEVICE CONTROL THREE (DC3)
|
|
||||||
^T D4 0x14 20 DEVICE CONTROL FOUR (DC4)
|
|
||||||
^U NK 0x15 21 NEGATIVE ACKNOWLEDGE (NAK)
|
|
||||||
^V SY 0x16 22 SYNCRONOUS IDLE (SYN)
|
|
||||||
^W EB 0x17 23 END OF TRANSMISSION BLOCK (ETB)
|
|
||||||
^X CN 0x18 24 CANCEL (CAN)
|
|
||||||
^Y EM 0x19 25 END OF MEDIUM (EM)
|
|
||||||
^Z SB 0x1a 26 SUBSTITUTE (SUB)
|
|
||||||
^[ EC 0x1b 27 ESCAPE (ESC)
|
|
||||||
^\ FS 0x1c 28 FILE SEPARATOR (IS4)
|
|
||||||
^] GS 0x1d 29 GROUP SEPARATOR (IS3)
|
|
||||||
^^ RS 0x1e 30 RECORD SEPARATOR (IS2)
|
|
||||||
^_ US 0x1f 31 UNIT SEPARATOR (IS1)
|
|
||||||
SP 0x20 32 SPACE
|
|
||||||
# Nb 0x23 35 NUMBER SIGN
|
|
||||||
$ DO 0x24 36 DOLLAR SIGN
|
|
||||||
@ At 0x40 64 COMMERCIAL AT
|
|
||||||
[ <( 0x5b 91 LEFT SQUARE BRACKET
|
|
||||||
\ // 0x5c 92 REVERSE SOLIDUS
|
|
||||||
] )> 0x5d 93 RIGHT SQUARE BRACKET
|
|
||||||
^ '> 0x5e 94 CIRCUMFLEX ACCENT
|
|
||||||
` '! 0x60 96 GRAVE ACCENT
|
|
||||||
{ (! 0x7b 123 LEFT CURLY BRACKET
|
|
||||||
| !! 0x7c 124 VERTICAL LINE
|
|
||||||
} !) 0x7d 125 RIGHT CURLY BRACKET
|
|
||||||
~ '? 0x7e 126 TILDE
|
|
||||||
^? DT 0x7f 127 DELETE (DEL)
|
|
||||||
~@ PA 0x80 128 PADDING CHARACTER (PAD)
|
|
||||||
~A HO 0x81 129 HIGH OCTET PRESET (HOP)
|
|
||||||
~B BH 0x82 130 BREAK PERMITTED HERE (BPH)
|
|
||||||
~C NH 0x83 131 NO BREAK HERE (NBH)
|
|
||||||
~D IN 0x84 132 INDEX (IND)
|
|
||||||
~E NL 0x85 133 NEXT LINE (NEL)
|
|
||||||
~F SA 0x86 134 START OF SELECTED AREA (SSA)
|
|
||||||
~G ES 0x87 135 END OF SELECTED AREA (ESA)
|
|
||||||
~H HS 0x88 136 CHARACTER TABULATION SET (HTS)
|
|
||||||
~I HJ 0x89 137 CHARACTER TABULATION WITH JUSTIFICATION (HTJ)
|
|
||||||
~J VS 0x8a 138 LINE TABULATION SET (VTS)
|
|
||||||
~K PD 0x8b 139 PARTIAL LINE FORWARD (PLD)
|
|
||||||
~L PU 0x8c 140 PARTIAL LINE BACKWARD (PLU)
|
|
||||||
~M RI 0x8d 141 REVERSE LINE FEED (RI)
|
|
||||||
~N S2 0x8e 142 SINGLE-SHIFT TWO (SS2)
|
|
||||||
~O S3 0x8f 143 SINGLE-SHIFT THREE (SS3)
|
|
||||||
~P DC 0x90 144 DEVICE CONTROL STRING (DCS)
|
|
||||||
~Q P1 0x91 145 PRIVATE USE ONE (PU1)
|
|
||||||
~R P2 0x92 146 PRIVATE USE TWO (PU2)
|
|
||||||
~S TS 0x93 147 SET TRANSMIT STATE (STS)
|
|
||||||
~T CC 0x94 148 CANCEL CHARACTER (CCH)
|
|
||||||
~U MW 0x95 149 MESSAGE WAITING (MW)
|
|
||||||
~V SG 0x96 150 START OF GUARDED AREA (SPA)
|
|
||||||
~W EG 0x97 151 END OF GUARDED AREA (EPA)
|
|
||||||
~X SS 0x98 152 START OF STRING (SOS)
|
|
||||||
~Y GC 0x99 153 SINGLE GRAPHIC CHARACTER INTRODUCER (SGCI)
|
|
||||||
~Z SC 0x9a 154 SINGLE CHARACTER INTRODUCER (SCI)
|
|
||||||
~[ CI 0x9b 155 CONTROL SEQUENCE INTRODUCER (CSI)
|
|
||||||
~\ ST 0x9c 156 STRING TERMINATOR (ST)
|
|
||||||
~] OC 0x9d 157 OPERATING SYSTEM COMMAND (OSC)
|
|
||||||
~^ PM 0x9e 158 PRIVACY MESSAGE (PM)
|
|
||||||
~_ AC 0x9f 159 APPLICATION PROGRAM COMMAND (APC)
|
|
||||||
| NS 0xa0 160 NO-BREAK SPACE
|
|
||||||
¡ !I 0xa1 161 INVERTED EXCLAMATION MARK
|
|
||||||
¢ Ct 0xa2 162 CENT SIGN
|
|
||||||
£ Pd 0xa3 163 POUND SIGN
|
|
||||||
¤ Cu 0xa4 164 CURRENCY SIGN
|
|
||||||
¥ Ye 0xa5 165 YEN SIGN
|
|
||||||
¦ BB 0xa6 166 BROKEN BAR
|
|
||||||
§ SE 0xa7 167 SECTION SIGN
|
|
||||||
¨ ': 0xa8 168 DIAERESIS
|
|
||||||
© Co 0xa9 169 COPYRIGHT SIGN
|
|
||||||
ª -a 0xaa 170 FEMININE ORDINAL INDICATOR
|
|
||||||
« << 0xab 171 LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
|
|
||||||
¬ NO 0xac 172 NOT SIGN
|
|
||||||
-- 0xad 173 SOFT HYPHEN
|
|
||||||
® Rg 0xae 174 REGISTERED SIGN
|
|
||||||
¯ 'm 0xaf 175 MACRON
|
|
||||||
° DG 0xb0 176 DEGREE SIGN
|
|
||||||
± +- 0xb1 177 PLUS-MINUS SIGN
|
|
||||||
² 2S 0xb2 178 SUPERSCRIPT TWO
|
|
||||||
³ 3S 0xb3 179 SUPERSCRIPT THREE
|
|
||||||
´ '' 0xb4 180 ACUTE ACCENT
|
|
||||||
µ My 0xb5 181 MICRO SIGN
|
|
||||||
¶ PI 0xb6 182 PILCROW SIGN
|
|
||||||
· .M 0xb7 183 MIDDLE DOT
|
|
||||||
¸ ', 0xb8 184 CEDILLA
|
|
||||||
¹ 1S 0xb9 185 SUPERSCRIPT ONE
|
|
||||||
º -o 0xba 186 MASCULINE ORDINAL INDICATOR
|
|
||||||
» >> 0xbb 187 RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
|
|
||||||
¼ 14 0xbc 188 VULGAR FRACTION ONE QUARTER
|
|
||||||
½ 12 0xbd 189 VULGAR FRACTION ONE HALF
|
|
||||||
¾ 34 0xbe 190 VULGAR FRACTION THREE QUARTERS
|
|
||||||
¿ ?I 0xbf 191 INVERTED QUESTION MARK
|
|
||||||
À A! 0xc0 192 LATIN CAPITAL LETTER A WITH GRAVE
|
|
||||||
Á A' 0xc1 193 LATIN CAPITAL LETTER A WITH ACUTE
|
|
||||||
 A> 0xc2 194 LATIN CAPITAL LETTER A WITH CIRCUMFLEX
|
|
||||||
à A? 0xc3 195 LATIN CAPITAL LETTER A WITH TILDE
|
|
||||||
Ä A: 0xc4 196 LATIN CAPITAL LETTER A WITH DIAERESIS
|
|
||||||
Å AA 0xc5 197 LATIN CAPITAL LETTER A WITH RING ABOVE
|
|
||||||
Æ AE 0xc6 198 LATIN CAPITAL LETTER AE
|
|
||||||
Ç C, 0xc7 199 LATIN CAPITAL LETTER C WITH CEDILLA
|
|
||||||
È E! 0xc8 200 LATIN CAPITAL LETTER E WITH GRAVE
|
|
||||||
É E' 0xc9 201 LATIN CAPITAL LETTER E WITH ACUTE
|
|
||||||
Ê E> 0xca 202 LATIN CAPITAL LETTER E WITH CIRCUMFLEX
|
|
||||||
Ë E: 0xcb 203 LATIN CAPITAL LETTER E WITH DIAERESIS
|
|
||||||
Ì I! 0xcc 204 LATIN CAPITAL LETTER I WITH GRAVE
|
|
||||||
Í I' 0xcd 205 LATIN CAPITAL LETTER I WITH ACUTE
|
|
||||||
Î I> 0xce 206 LATIN CAPITAL LETTER I WITH CIRCUMFLEX
|
|
||||||
Ï I: 0xcf 207 LATIN CAPITAL LETTER I WITH DIAERESIS
|
|
||||||
Ð D- 0xd0 208 LATIN CAPITAL LETTER ETH (Icelandic)
|
|
||||||
Ñ N? 0xd1 209 LATIN CAPITAL LETTER N WITH TILDE
|
|
||||||
Ò O! 0xd2 210 LATIN CAPITAL LETTER O WITH GRAVE
|
|
||||||
Ó O' 0xd3 211 LATIN CAPITAL LETTER O WITH ACUTE
|
|
||||||
Ô O> 0xd4 212 LATIN CAPITAL LETTER O WITH CIRCUMFLEX
|
|
||||||
Õ O? 0xd5 213 LATIN CAPITAL LETTER O WITH TILDE
|
|
||||||
Ö O: 0xd6 214 LATIN CAPITAL LETTER O WITH DIAERESIS
|
|
||||||
× *X 0xd7 215 MULTIPLICATION SIGN
|
|
||||||
Ø O/ 0xd8 216 LATIN CAPITAL LETTER O WITH STROKE
|
|
||||||
Ù U! 0xd9 217 LATIN CAPITAL LETTER U WITH GRAVE
|
|
||||||
Ú U' 0xda 218 LATIN CAPITAL LETTER U WITH ACUTE
|
|
||||||
Û U> 0xdb 219 LATIN CAPITAL LETTER U WITH CIRCUMFLEX
|
|
||||||
Ü U: 0xdc 220 LATIN CAPITAL LETTER U WITH DIAERESIS
|
|
||||||
Ý Y' 0xdd 221 LATIN CAPITAL LETTER Y WITH ACUTE
|
|
||||||
Þ TH 0xde 222 LATIN CAPITAL LETTER THORN (Icelandic)
|
|
||||||
ß ss 0xdf 223 LATIN SMALL LETTER SHARP S (German)
|
|
||||||
à a! 0xe0 224 LATIN SMALL LETTER A WITH GRAVE
|
|
||||||
á a' 0xe1 225 LATIN SMALL LETTER A WITH ACUTE
|
|
||||||
â a> 0xe2 226 LATIN SMALL LETTER A WITH CIRCUMFLEX
|
|
||||||
ã a? 0xe3 227 LATIN SMALL LETTER A WITH TILDE
|
|
||||||
ä a: 0xe4 228 LATIN SMALL LETTER A WITH DIAERESIS
|
|
||||||
å aa 0xe5 229 LATIN SMALL LETTER A WITH RING ABOVE
|
|
||||||
æ ae 0xe6 230 LATIN SMALL LETTER AE
|
|
||||||
ç c, 0xe7 231 LATIN SMALL LETTER C WITH CEDILLA
|
|
||||||
è e! 0xe8 232 LATIN SMALL LETTER E WITH GRAVE
|
|
||||||
é e' 0xe9 233 LATIN SMALL LETTER E WITH ACUTE
|
|
||||||
ê e> 0xea 234 LATIN SMALL LETTER E WITH CIRCUMFLEX
|
|
||||||
ë e: 0xeb 235 LATIN SMALL LETTER E WITH DIAERESIS
|
|
||||||
ì i! 0xec 236 LATIN SMALL LETTER I WITH GRAVE
|
|
||||||
í i' 0xed 237 LATIN SMALL LETTER I WITH ACUTE
|
|
||||||
î i> 0xee 238 LATIN SMALL LETTER I WITH CIRCUMFLEX
|
|
||||||
ï i: 0xef 239 LATIN SMALL LETTER I WITH DIAERESIS
|
|
||||||
ð d- 0xf0 240 LATIN SMALL LETTER ETH (Icelandic)
|
|
||||||
ñ n? 0xf1 241 LATIN SMALL LETTER N WITH TILDE
|
|
||||||
ò o! 0xf2 242 LATIN SMALL LETTER O WITH GRAVE
|
|
||||||
ó o' 0xf3 243 LATIN SMALL LETTER O WITH ACUTE
|
|
||||||
ô o> 0xf4 244 LATIN SMALL LETTER O WITH CIRCUMFLEX
|
|
||||||
õ o? 0xf5 245 LATIN SMALL LETTER O WITH TILDE
|
|
||||||
ö o: 0xf6 246 LATIN SMALL LETTER O WITH DIAERESIS
|
|
||||||
÷ -: 0xf7 247 DIVISION SIGN
|
|
||||||
ø o/ 0xf8 248 LATIN SMALL LETTER O WITH STROKE
|
|
||||||
ù u! 0xf9 249 LATIN SMALL LETTER U WITH GRAVE
|
|
||||||
ú u' 0xfa 250 LATIN SMALL LETTER U WITH ACUTE
|
|
||||||
û u> 0xfb 251 LATIN SMALL LETTER U WITH CIRCUMFLEX
|
|
||||||
ü u: 0xfc 252 LATIN SMALL LETTER U WITH DIAERESIS
|
|
||||||
ý y' 0xfd 253 LATIN SMALL LETTER Y WITH ACUTE
|
|
||||||
þ th 0xfe 254 LATIN SMALL LETTER THORN (Icelandic)
|
|
||||||
ÿ y: 0xff 255 LATIN SMALL LETTER Y WITH DIAERESIS
|
|
||||||
|
|
||||||
vim:tw=78:ts=8:ft=help:norl:
|
|
||||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -1,269 +0,0 @@
|
|||||||
*farsi.txt* For Vim version 6.3. Last change: 2002 Oct 29
|
|
||||||
|
|
||||||
|
|
||||||
VIM REFERENCE MANUAL by Mortaza Ghassab Shiran
|
|
||||||
|
|
||||||
|
|
||||||
Right to Left and Farsi Mapping for Vim *farsi* *Farsi*
|
|
||||||
|
|
||||||
{Vi does not have any of these commands}
|
|
||||||
|
|
||||||
*E27*
|
|
||||||
In order to use right-to-left and Farsi mapping support, it is necessary to
|
|
||||||
compile Vim with the |+farsi| feature.
|
|
||||||
|
|
||||||
These functions have been made by Mortaza G. Shiran <[email protected]>
|
|
||||||
|
|
||||||
|
|
||||||
Introduction
|
|
||||||
------------
|
|
||||||
In right-to-left oriented files the characters appear on the screen from right
|
|
||||||
to left. This kind of file is most useful when writing Farsi documents,
|
|
||||||
composing faxes or writing Farsi memos.
|
|
||||||
|
|
||||||
The commands, prompts and help files are not in Farsi, therefore the user
|
|
||||||
interface remains the standard Vi interface.
|
|
||||||
|
|
||||||
|
|
||||||
Highlights
|
|
||||||
----------
|
|
||||||
o Editing left-to-right files as in the original Vim, no change.
|
|
||||||
|
|
||||||
o Viewing and editing files in right-to-left windows. File orientation is
|
|
||||||
per window, so it is possible to view the same file in right-to-left and
|
|
||||||
left-to-right modes, simultaneously.
|
|
||||||
|
|
||||||
o Compatibility to the original Vim. Almost all features work in
|
|
||||||
right-to-left mode (see bugs below).
|
|
||||||
|
|
||||||
o Changing keyboard mapping and reverse insert modes using a single
|
|
||||||
command.
|
|
||||||
|
|
||||||
o Backing from reverse insert mode to the correct place in the file
|
|
||||||
(if possible).
|
|
||||||
|
|
||||||
o While in Farsi mode, numbers are entered from left to right. Upon entering
|
|
||||||
a none number character, that character will be inserted just into the
|
|
||||||
left of the last number.
|
|
||||||
|
|
||||||
o No special terminal with right-to-left capabilities is required. The
|
|
||||||
right-to-left changes are completely hardware independent. Only
|
|
||||||
Farsi font is necessary.
|
|
||||||
|
|
||||||
o Farsi keymapping on the command line in reverse insert mode.
|
|
||||||
|
|
||||||
o Toggling between left-to-right and right-to-left via F8 function key.
|
|
||||||
|
|
||||||
o Toggling between Farsi ISIR-3342 standard encoding and VIM Farsi via F9
|
|
||||||
function key. Since this makes sense only for the text written in
|
|
||||||
right-to-left mode, this function is also supported only in right-to-left
|
|
||||||
mode.
|
|
||||||
|
|
||||||
Farsi Fonts *farsi fonts*
|
|
||||||
-----------
|
|
||||||
|
|
||||||
If the "extra" archive has been unpacked, the following files are found in the
|
|
||||||
subdirectories of the '$VIM/farsi' directory:
|
|
||||||
|
|
||||||
+ far-a01.pcf X Windows fonts for Unix including Linux systems
|
|
||||||
+ far-a01.bf X Windows fonts for SunOs
|
|
||||||
+ far-a01.f16 a screen fonts for Unix including Linux systems
|
|
||||||
+ far-a01.fon a monospaced fonts for Windows NT/95/98
|
|
||||||
+ far-a01.com a screen fonts for DOS
|
|
||||||
|
|
||||||
|
|
||||||
Font Installation
|
|
||||||
-----------------
|
|
||||||
|
|
||||||
o Installation of fonts for MS Window systems (NT/95/98)
|
|
||||||
|
|
||||||
From 'Control Panel' folder, start the 'Fonts' program. Then from 'file'
|
|
||||||
menu item select 'Install New Fonts ...'. Browse and select the
|
|
||||||
'far-a01.fon', then follow the installation guide.
|
|
||||||
NOTE: several people have reported that this does not work. The solution
|
|
||||||
is unknown.
|
|
||||||
|
|
||||||
o Installation of fonts for X Window systems (Unix/Linux)
|
|
||||||
|
|
||||||
Depending on your system, copy far-a01.pcf.Z or far-a01.pcf.gz into a
|
|
||||||
directory of your choice. Change to the directory containing the Farsi
|
|
||||||
fonts and execute the following commands:
|
|
||||||
|
|
||||||
> mkfontdir
|
|
||||||
> xset +fp path_name_of_farsi_fonts_directory
|
|
||||||
|
|
||||||
o Installation of fonts for X Window systems (SunOs)
|
|
||||||
|
|
||||||
Copy far-a01.bf font into a directory of your choice.
|
|
||||||
Change to the directory containing the far-a01.fb fonts and
|
|
||||||
execute the following commands:
|
|
||||||
|
|
||||||
> fldfamily
|
|
||||||
> xset +fp path_name_of_fonts_directory
|
|
||||||
|
|
||||||
o Installation of ASCII screen fonts (Unix/Linux)
|
|
||||||
|
|
||||||
For Linux system, copy the far-a01.f16 fonts into /usr/lib/kbd/consolefonts
|
|
||||||
directory and execute the setfont program as "setfont far-a01.f16". For
|
|
||||||
other systems (e.g. SCO Unix), please refer to the fonts installation
|
|
||||||
section of your system administration manuals.
|
|
||||||
|
|
||||||
o Installation of ASCII screen fonts (DOS)
|
|
||||||
|
|
||||||
After system power on, prior to the first use of VIM, upload the Farsi
|
|
||||||
fonts by executing the far-a01.com font uploading program.
|
|
||||||
|
|
||||||
|
|
||||||
Usage
|
|
||||||
-----
|
|
||||||
Prior to starting VIM, the environment in which VIM can run in Farsi mode,
|
|
||||||
must be set. In addition to installation of Farsi fonts, following points
|
|
||||||
refer to some of the system environments, which you may need to set:
|
|
||||||
Key code mapping, loading graphic card in ASCII screen mode, setting the IO
|
|
||||||
driver in 8 bit clean mode ... .
|
|
||||||
|
|
||||||
o Setting the Farsi fonts
|
|
||||||
|
|
||||||
+ For VIM GUI set the 'guifont' to far-a01. This is done by entering
|
|
||||||
':set guifont=far-a01' in the VIM window.
|
|
||||||
|
|
||||||
You can have 'guifont' set to far-a01 by VIM during the VIM startup
|
|
||||||
by appending the ':set guifont=far-a01' into your .vimrc file
|
|
||||||
(in case of NT/95/98 platforms _vimrc).
|
|
||||||
|
|
||||||
Under the X Window environment, you can also start the VIM with
|
|
||||||
'-fn far-a01' option.
|
|
||||||
|
|
||||||
+ For the VIM within a xterm, start a xterm with the Farsi fonts (e.g.
|
|
||||||
kterm -fn far-a01). Then start the VIM inside the kterm.
|
|
||||||
|
|
||||||
+ For VIM under DOS, prior to the first usage of VIM, upload the Farsi
|
|
||||||
fonts by executing the far-a01.com fonts uploading program.
|
|
||||||
|
|
||||||
o Farsi Keymapping Activation
|
|
||||||
|
|
||||||
To activate the Farsi keymapping, set either 'altkeymap' or 'fkmap'.
|
|
||||||
This is done by entering ':set akm' or ':set fk' in the VIM window.
|
|
||||||
You can have 'altkeymap' or 'fkmap' set as default by appending ':set akm'
|
|
||||||
or ':set fk' in your .vimrc file or _vimrc in case of NT/95/98 platforms.
|
|
||||||
|
|
||||||
To turn off the Farsi keymapping as a default second language keymapping,
|
|
||||||
reset the 'altkeymap' by entering ':set noakm'.
|
|
||||||
|
|
||||||
o right-to-left Farsi Mode
|
|
||||||
|
|
||||||
By default VIM starts in Left-to-right mode. Following are ways to change
|
|
||||||
the window orientation:
|
|
||||||
|
|
||||||
+ Start the VIM with -F option (e.g. vim -F ... ).
|
|
||||||
|
|
||||||
+ Use F8 function key to toggle between left-to-right and right-to-left.
|
|
||||||
|
|
||||||
+ While in Left-to-right mode, enter 'set rl' in the command line ('rl' is
|
|
||||||
the abbreviation for rightleft).
|
|
||||||
|
|
||||||
+ Put the 'set rl' line in your '.vimrc' file to start the VIM in
|
|
||||||
right-to-left mode permanently.
|
|
||||||
|
|
||||||
Encoding
|
|
||||||
--------
|
|
||||||
|
|
||||||
The letter encoding used is the VIM extended ISIR-3342 standard with a built
|
|
||||||
in function to convert between VIM extended ISIR-3342 and ISIR-3342 standard.
|
|
||||||
|
|
||||||
For document portability reasons, the letter encoding is kept the same across
|
|
||||||
different platforms (i.e. UNIX's, NT/95/98, MS DOS, ...).
|
|
||||||
|
|
||||||
|
|
||||||
o Keyboard
|
|
||||||
|
|
||||||
+ CTRL-_ in insert/replace modes toggles between Farsi(akm)/Latin
|
|
||||||
mode as follows:
|
|
||||||
|
|
||||||
+ CTRL-_ moves the cursor to the end of the typed text in edit mode.
|
|
||||||
|
|
||||||
+ CTRL-_ in command mode only toggles keyboard mapping between Farsi(akm)/
|
|
||||||
Latin. The Farsi text is then entered in reverse insert mode.
|
|
||||||
|
|
||||||
+ F8 - Toggles between left-to-right and right-to-left.
|
|
||||||
|
|
||||||
+ F9 - Toggles the encoding between ISIR-3342 standard and VIM extended
|
|
||||||
ISIR-3342 (supported only in right-to-left mode).
|
|
||||||
|
|
||||||
+ Keyboard mapping is based on the Iranian ISIRI-2901 standard.
|
|
||||||
Following table shows the keyboard mapping while Farsi(akm) mode set:
|
|
||||||
|
|
||||||
-------------------------------------
|
|
||||||
` 1 2 3 4 5 6 7 8 9 0 - =
|
|
||||||
¢ ± ² ³ ´ µ ¶ · ¸ ¹ ° ½
|
|
||||||
-------------------------------------
|
|
||||||
~ ! @ # $ % ^ & * ( ) _ +
|
|
||||||
~ £ § ® ¤ ¥ ª ¬ è ¨ © é «
|
|
||||||
-------------------------------------
|
|
||||||
q w e r t z u i o p [ ]
|
|
||||||
Ó Ò Æ Ù Ø Õ Ö à Ê É Ç ˆ
|
|
||||||
-------------------------------------
|
|
||||||
Q W E R T Z U I O P { }
|
|
||||||
÷ õ ô ó ò ý ð ö [ ] { }
|
|
||||||
-------------------------------------
|
|
||||||
a s d f g h j k l ; ' \
|
|
||||||
Ñ Ð á Ã Ü Á Å Þ Ý Ú Û ë
|
|
||||||
-------------------------------------
|
|
||||||
A S D F G H J K L : " |
|
|
||||||
ù û þ ú ø À ü æ ç º » ê
|
|
||||||
-------------------------------------
|
|
||||||
< y x c v b n m , . /
|
|
||||||
¾ × Ô Î Í Ì Ë Ä ß ¦ ¯
|
|
||||||
-------------------------------------
|
|
||||||
> Y X C V B N M < > ?
|
|
||||||
¼ ñ Ô Ï Í ¡ Ë Â ¾ ¼ ¿
|
|
||||||
-------------------------------------
|
|
||||||
|
|
||||||
Note:
|
|
||||||
¡ stands for Farsi PSP (break without space)
|
|
||||||
|
|
||||||
¢ stands for Farsi PCN (for HAMZE attribute )
|
|
||||||
|
|
||||||
Restrictions
|
|
||||||
------------
|
|
||||||
|
|
||||||
o In insert/replace mode and fkmap (Farsi mode) set, CTRL-B is not
|
|
||||||
supported.
|
|
||||||
|
|
||||||
o If you change the character mapping between Latin/Farsi, the redo buffer
|
|
||||||
will be reset (emptied). That is, redo is valid and will function (using
|
|
||||||
'.') only within the mode you are in.
|
|
||||||
|
|
||||||
o While numbers are entered in Farsi mode, the redo buffer will be reset
|
|
||||||
(emptied). That is, you can not redo the last changes (using '.') after
|
|
||||||
entering numbers.
|
|
||||||
|
|
||||||
o While in left-to-right and Farsi mode set, CTRL-R is not supported.
|
|
||||||
|
|
||||||
o While in right-to-left mode, the search on 'Latin' pattern does not work,
|
|
||||||
except if you enter the Latin search pattern in reverse.
|
|
||||||
|
|
||||||
o In the command mode, there is no support for entering the numbers from left
|
|
||||||
to right and also for the sake of the flexibility the keymapping logic is
|
|
||||||
restricted.
|
|
||||||
|
|
||||||
o Under X Window environment, if you want to run the VIM within a xterm
|
|
||||||
terminal emulator and Farsi mode set, you need to have an ANSI compatible
|
|
||||||
xterm terminal emulator. This is because the letter codes above 128 decimal
|
|
||||||
have certain meanings in the standard xterm terminal emulator.
|
|
||||||
|
|
||||||
Note: Under X Window environment, VIM GUI works fine in Farsi mode.
|
|
||||||
This eliminates the need of any xterm terminal emulator.
|
|
||||||
|
|
||||||
|
|
||||||
Bugs
|
|
||||||
----
|
|
||||||
While in insert/replace and Farsi mode set, if you repeatedly change the
|
|
||||||
cursor position (via cursor movement) and enter new text and then try to undo
|
|
||||||
the last change, the undo will lag one change behind. But as you continue to
|
|
||||||
undo, you will reach the original line of text. You can also use U to undo all
|
|
||||||
changes made in the current line.
|
|
||||||
|
|
||||||
For more information about the bugs refer to rileft.txt.
|
|
||||||
|
|
||||||
vim:tw=78:ts=8:ft=help:norl:
|
|
||||||
@@ -1,529 +0,0 @@
|
|||||||
*filetype.txt* For Vim version 6.3. Last change: 2004 May 05
|
|
||||||
|
|
||||||
|
|
||||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
|
||||||
|
|
||||||
|
|
||||||
Filetypes *filetype* *file-type*
|
|
||||||
|
|
||||||
1. Filetypes |filetypes|
|
|
||||||
2. Filetype plugin |filetype-plugins|
|
|
||||||
3. Docs for the default filetype plugins. |ftplugin-docs|
|
|
||||||
|
|
||||||
Also see |autocmd.txt|.
|
|
||||||
|
|
||||||
{Vi does not have any of these commands}
|
|
||||||
|
|
||||||
==============================================================================
|
|
||||||
1. Filetypes *filetypes* *file-types*
|
|
||||||
|
|
||||||
Vim can detect the type of file that is edited. This is done by checking the
|
|
||||||
file name and sometimes by inspecting the contents of the file for specific
|
|
||||||
text.
|
|
||||||
|
|
||||||
*:filetype* *:filet*
|
|
||||||
To enable file type detection, use this command in your vimrc: >
|
|
||||||
:filetype on
|
|
||||||
Each time a new or existing file is edited, Vim will try to recognize the type
|
|
||||||
of the file and set the 'filetype' option. This will trigger the FileType
|
|
||||||
event, which can be used to set the syntax highlighting, set options, etc.
|
|
||||||
|
|
||||||
NOTE: Filetypes and 'compatible' don't work together well, since being Vi
|
|
||||||
compatible means options are global. Resetting 'compatible' is recommended,
|
|
||||||
if you didn't do that already.
|
|
||||||
|
|
||||||
Detail: The ":filetype on" command will load one of these files:
|
|
||||||
Amiga $VIMRUNTIME/filetype.vim
|
|
||||||
Mac $VIMRUNTIME:filetype.vim
|
|
||||||
MS-DOS $VIMRUNTIME\filetype.vim
|
|
||||||
RiscOS Vim:Filetype
|
|
||||||
Unix $VIMRUNTIME/filetype.vim
|
|
||||||
VMS $VIMRUNTIME/filetype.vim
|
|
||||||
This file is a Vim script that defines autocommands for the
|
|
||||||
BufNewFile and BufRead events. If the file type is not found by the
|
|
||||||
name, the file $VIMRUNTIME/scripts.vim is used to detect it from the
|
|
||||||
contents of the file.
|
|
||||||
|
|
||||||
To add your own file types, see |new-filetype| below.
|
|
||||||
|
|
||||||
If the file type is not detected automatically, or it finds the wrong type,
|
|
||||||
you can either set the 'filetype' option manually, or add a modeline to your
|
|
||||||
file. Example, for in an IDL file use the command: >
|
|
||||||
:set filetype=idl
|
|
||||||
or add this |modeline| to the file: >
|
|
||||||
/* vim: set filetype=idl : */
|
|
||||||
<
|
|
||||||
*:filetype-plugin-on*
|
|
||||||
You can enable loading the plugin files for specific file types with: >
|
|
||||||
:filetype plugin on
|
|
||||||
If filetype detection was not switched on yet, it will be as well.
|
|
||||||
This actually loads the file "ftplugin.vim" in 'runtimepath'.
|
|
||||||
The result is that when a file is edited its plugin file is loaded (if there
|
|
||||||
is one for the detected filetype). |filetype-plugin|
|
|
||||||
|
|
||||||
*:filetype-plugin-off*
|
|
||||||
You can disable it again with: >
|
|
||||||
:filetype plugin off
|
|
||||||
The filetype detection is not switched off then. But if you do switch off
|
|
||||||
filetype detection, the plugins will not be loaded either.
|
|
||||||
This actually loads the file "ftplugof.vim" in 'runtimepath'.
|
|
||||||
|
|
||||||
*:filetype-indent-on*
|
|
||||||
You can enable loading the indent file for specific file types with: >
|
|
||||||
:filetype indent on
|
|
||||||
If filetype detection was not switched on yet, it will be as well.
|
|
||||||
This actually loads the file "indent.vim" in 'runtimepath'.
|
|
||||||
The result is that when a file is edited its indent file is loaded (if there
|
|
||||||
is one for the detected filetype). |indent-expression|
|
|
||||||
|
|
||||||
*:filetype-indent-off*
|
|
||||||
You can disable it again with: >
|
|
||||||
:filetype indent off
|
|
||||||
The filetype detection is not switched off then. But if you do switch off
|
|
||||||
filetype detection, the indent files will not be loaded either.
|
|
||||||
This actually loads the file "indoff.vim" in 'runtimepath'.
|
|
||||||
|
|
||||||
*:filetype-off*
|
|
||||||
To disable file type detection, use this command: >
|
|
||||||
:filetype off
|
|
||||||
This will keep the flags for "plugin" and "indent", but since no file types
|
|
||||||
are being detected, they won't work until the next ":filetype on".
|
|
||||||
|
|
||||||
|
|
||||||
Overview: *:filetype-overview*
|
|
||||||
|
|
||||||
command detection plugin indent ~
|
|
||||||
:filetype on on unchanged unchanged
|
|
||||||
:filetype off off unchanged unchanged
|
|
||||||
:filetype plugin on on on unchanged
|
|
||||||
:filetype plugin off unchanged off unchanged
|
|
||||||
:filetype indent on on unchanged on
|
|
||||||
:filetype indent off unchanged unchanged off
|
|
||||||
:filetype plugin indent on on on on
|
|
||||||
:filetype plugin indent off unchanged off off
|
|
||||||
|
|
||||||
To see the current status, type: >
|
|
||||||
:filetype
|
|
||||||
The output looks something like this: >
|
|
||||||
filetype detection:ON plugin:ON indent:OFF
|
|
||||||
|
|
||||||
The file types are also used for syntax highlighting. If the ":syntax on"
|
|
||||||
command is used, the file type detection is installed too. There is no need
|
|
||||||
to do ":filetype on" after ":syntax on".
|
|
||||||
|
|
||||||
To disable one of the file types, add a line in the your filetype file, see
|
|
||||||
|remove-filetype|.
|
|
||||||
|
|
||||||
*filetype-detect*
|
|
||||||
To detect the file type again: >
|
|
||||||
:filetype detect
|
|
||||||
Use this if you started with an empty file and typed text that makes it
|
|
||||||
possible to detect the file type. For example, when you entered this in a
|
|
||||||
shell script: "#!/bin/csh".
|
|
||||||
When filetype detection was off, it will be enabled first, like the "on"
|
|
||||||
argument was used.
|
|
||||||
|
|
||||||
*filetype-overrule*
|
|
||||||
When the same extension is used for two filetypes, Vim tries to guess what
|
|
||||||
kind of file it is. This doesn't always work. A number of global variables
|
|
||||||
can be used to overrule the filetype used for certain extensions:
|
|
||||||
|
|
||||||
file name variable ~
|
|
||||||
*.asa g:filetype_asa |aspvbs-syntax| |aspperl-syntax|
|
|
||||||
*.asp g:filetype_asp |aspvbs-syntax| |aspperl-syntax|
|
|
||||||
*.asm g:asmsyntax |asm-syntax|
|
|
||||||
*.prg g:filetype_prg
|
|
||||||
*.pl g:filetype_pl
|
|
||||||
*.inc g:filetype_inc
|
|
||||||
*.w g:filetype_w |cweb-syntax|
|
|
||||||
*.i g:filetype_i |progress-syntax|
|
|
||||||
*.p g:filetype_p |pascal-syntax|
|
|
||||||
*.sh g:bash_is_sh |sh-syntax|
|
|
||||||
|
|
||||||
*filetype-ignore*
|
|
||||||
To avoid that certain files are being inspected, the g:ft_ignore_pat variable
|
|
||||||
is used. The default value is set like this: >
|
|
||||||
:let g:ft_ignore_pat = '\.\(Z\|gz\|bz2\|zip\|tgz\)$'
|
|
||||||
This means that the contents of compressed files are not inspected.
|
|
||||||
|
|
||||||
*new-filetype*
|
|
||||||
If a file type that you want to use is not detected yet, there are three ways
|
|
||||||
to add it. In any way, it's better not modify the $VIMRUNTIME/filetype.vim
|
|
||||||
file. It will be overwritten when installing a new version of Vim.
|
|
||||||
|
|
||||||
A. If you want to overrule all default file type checks.
|
|
||||||
This works by writing one file for each filetype. The disadvantage is that
|
|
||||||
means there can be many files. The advantage is that you can simply drop
|
|
||||||
this file in the right directory to make it work.
|
|
||||||
|
|
||||||
1. Create your user runtime directory. You would normally use the first
|
|
||||||
item of the 'runtimepath' option. Then create the directory "ftdetect"
|
|
||||||
inside it. Example for Unix: >
|
|
||||||
:!mkdir ~/.vim
|
|
||||||
:!mkdir ~/.vim/ftdetect
|
|
||||||
<
|
|
||||||
2. Create a file that contains an autocommand to detect the file type.
|
|
||||||
Example: >
|
|
||||||
au BufRead,BufNewFile *.mine set filetype=mine
|
|
||||||
< Note that there is no "augroup" command, this has already been done
|
|
||||||
when sourcing your file. You could also use the pattern "*" and then
|
|
||||||
check the contents of the file to recognize it.
|
|
||||||
Write this file as "mine.vim" in the "ftdetect" directory in your user
|
|
||||||
runtime directory. For example, for Unix: >
|
|
||||||
:w ~/.vim/ftdetect/mine.vim
|
|
||||||
|
|
||||||
< 3. To use the new filetype detection you must restart Vim.
|
|
||||||
|
|
||||||
The files in the "ftdetect" directory are used after all the default
|
|
||||||
checks, thus they can overrule a previously detected file type.
|
|
||||||
|
|
||||||
B. If you want to detect your file after the default file type checks.
|
|
||||||
|
|
||||||
This works like A above, but instead of setting 'filetype' unconditionally
|
|
||||||
use ":setfiletype". This will only set 'filetype' if no file type was
|
|
||||||
detected yet. Example: >
|
|
||||||
au BufRead,BufNewFile *.txt setfiletype text
|
|
||||||
<
|
|
||||||
You can also use the already detected file type in your command. For
|
|
||||||
example, to use the file type "mypascal" when "pascal" has been detected: >
|
|
||||||
au BufRead,BufNewFile * if &ft == 'pascal' | set ft=mypascal
|
|
||||||
| endif
|
|
||||||
|
|
||||||
C. If your file type can be detected by the file name.
|
|
||||||
1. Create your user runtime directory. You would normally use the first
|
|
||||||
item of the 'runtimepath' option. Example for Unix: >
|
|
||||||
:!mkdir ~/.vim
|
|
||||||
<
|
|
||||||
2. Create a file that contains autocommands to detect the file type.
|
|
||||||
Example: >
|
|
||||||
" my filetype file
|
|
||||||
if exists("did_load_filetypes")
|
|
||||||
finish
|
|
||||||
endif
|
|
||||||
augroup filetypedetect
|
|
||||||
au! BufRead,BufNewFile *.mine setfiletype mine
|
|
||||||
au! BufRead,BufNewFile *.xyz setfiletype drawing
|
|
||||||
augroup END
|
|
||||||
< Write this file as "filetype.vim" in your user runtime directory. For
|
|
||||||
example, for Unix: >
|
|
||||||
:w ~/.vim/filetype.vim
|
|
||||||
|
|
||||||
< 3. To use the new filetype detection you must restart Vim.
|
|
||||||
|
|
||||||
Your filetype.vim will be sourced before the default FileType autocommands
|
|
||||||
have been installed. Your autocommands will match first, and the
|
|
||||||
":setfiletype" command will make sure that no other autocommands will set
|
|
||||||
'filetype' after this.
|
|
||||||
*new-filetype-scripts*
|
|
||||||
D. If your filetype can only be detected by inspecting the contents of the
|
|
||||||
file.
|
|
||||||
|
|
||||||
1. Create your user runtime directory. You would normally use the first
|
|
||||||
item of the 'runtimepath' option. Example for Unix: >
|
|
||||||
:!mkdir ~/.vim
|
|
||||||
<
|
|
||||||
2. Create a vim script file for doing this. Example: >
|
|
||||||
if did_filetype() " filetype already set..
|
|
||||||
finish " ..don't do these checks
|
|
||||||
endif
|
|
||||||
if getline(1) =~ '^#!.*\<mine\>'
|
|
||||||
setfiletype mine
|
|
||||||
elseif getline(1) =~? '\<drawing\>'
|
|
||||||
setfiletype drawing
|
|
||||||
endif
|
|
||||||
< See $VIMRUNTIME/scripts.vim for more examples.
|
|
||||||
Write this file as "scripts.vim" in your user runtime directory. For
|
|
||||||
example, for Unix: >
|
|
||||||
:w ~/.vim/scripts.vim
|
|
||||||
<
|
|
||||||
3. The detection will work right away, no need to restart Vim.
|
|
||||||
|
|
||||||
Your scripts.vim is loaded before the default checks for file types, which
|
|
||||||
means that your rules override the default rules in
|
|
||||||
$VIMRUNTIME/scripts.vim.
|
|
||||||
|
|
||||||
*remove-filetype*
|
|
||||||
If a file type is detected that is wrong for you, install a filetype.vim or
|
|
||||||
scripts.vim to catch it (see above). You can set 'filetype' to a non-existing
|
|
||||||
name to avoid that it will be set later anyway: >
|
|
||||||
:set filetype=ignored
|
|
||||||
|
|
||||||
If you are setting up a system with many users, and you don't want each user
|
|
||||||
to add/remove the same filetypes, consider writing the filetype.vim and
|
|
||||||
scripts.vim files in a runtime directory that is used for everybody. Check
|
|
||||||
the 'runtimepath' for a directory to use. If there isn't one, set
|
|
||||||
'runtimepath' in the |system-vimrc|. Be careful to keep the default
|
|
||||||
directories!
|
|
||||||
|
|
||||||
|
|
||||||
*autocmd-osfiletypes*
|
|
||||||
On operating systems which support storing a file type with the file, you can
|
|
||||||
specify that an autocommand should only be executed if the file is of a
|
|
||||||
certain type.
|
|
||||||
|
|
||||||
The actual type checking depends on which platform you are running Vim
|
|
||||||
on; see your system's documentation for details.
|
|
||||||
|
|
||||||
To use osfiletype checking in an autocommand you should put a list of types to
|
|
||||||
match in angle brackets in place of a pattern, like this: >
|
|
||||||
|
|
||||||
:au BufRead *.html,<&faf;HTML> runtime! syntax/html.vim
|
|
||||||
|
|
||||||
This will match:
|
|
||||||
|
|
||||||
- Any file whose name ends in `.html'
|
|
||||||
- Any file whose type is `&faf' or 'HTML', where the meaning of these types
|
|
||||||
depends on which version of Vim you are using.
|
|
||||||
Unknown types are considered NOT to match.
|
|
||||||
|
|
||||||
You can also specify a type and a pattern at the same time (in which case they
|
|
||||||
must both match): >
|
|
||||||
|
|
||||||
:au BufRead <&fff>diff*
|
|
||||||
|
|
||||||
This will match files of type `&fff' whose names start with `diff'.
|
|
||||||
|
|
||||||
Note that osfiletype checking is skipped if Vim is compiled without the
|
|
||||||
|+osfiletype| feature.
|
|
||||||
|
|
||||||
*plugin-details*
|
|
||||||
The "plugin" directory can be in any of the directories in the 'runtimepath'
|
|
||||||
option. All of these directories will be searched for plugins and they are
|
|
||||||
all loaded. For example, if this command: >
|
|
||||||
|
|
||||||
set runtimepath
|
|
||||||
|
|
||||||
produces this output: >
|
|
||||||
|
|
||||||
runtimepath=/etc/vim,~/.vim,/usr/local/share/vim/vim60
|
|
||||||
|
|
||||||
then Vim will load all plugins in these directories: >
|
|
||||||
|
|
||||||
/etc/vim/plugin/
|
|
||||||
~/.vim/plugin/
|
|
||||||
/usr/local/share/vim/vim60/plugin/
|
|
||||||
|
|
||||||
Note that the last one is the value of $VIMRUNTIME which has been expanded.
|
|
||||||
|
|
||||||
What if it looks like your plugin is not being loaded? You can find out what
|
|
||||||
happens when Vim starts up by using the |-V| argument: >
|
|
||||||
vim -V1
|
|
||||||
You will see a lot of messages, in between them is a remark about loading the
|
|
||||||
plugins. It starts with: >
|
|
||||||
Searching for "plugin/*.vim" in
|
|
||||||
There you can see where Vim looks for your plugin scripts.
|
|
||||||
|
|
||||||
==============================================================================
|
|
||||||
2. Filetype plugin *filetype-plugins*
|
|
||||||
|
|
||||||
When loading filetype plugins has been enabled |:filetype-plugin-on|, options
|
|
||||||
will be set and mappings defined. These are all local to the buffer, they
|
|
||||||
will not be used for other files.
|
|
||||||
|
|
||||||
Defining mappings for a filetype may get in the way of the mappings you
|
|
||||||
define yourself. There are a few ways to avoid this:
|
|
||||||
1. Set the "maplocalleader" variable to the key sequence you want the mappings
|
|
||||||
to start with. Example: >
|
|
||||||
:let maplocalleader = ","
|
|
||||||
< All mappings will then start with a comma instead of the default, which
|
|
||||||
is a backslash. Also see |<LocalLeader>|.
|
|
||||||
|
|
||||||
2. Define your own mapping. Example: >
|
|
||||||
:map ,p <Plug>MailQuote
|
|
||||||
< You need to check the description of the plugin file below for the
|
|
||||||
functionality it offers and the string to map to.
|
|
||||||
You need to define your own mapping before the plugin is loaded (before
|
|
||||||
editing a file of that type). The plugin will then skip installing the
|
|
||||||
default mapping.
|
|
||||||
|
|
||||||
3. Disable defining mappings for a specific filetype by setting a variable,
|
|
||||||
which contains the name of the filetype. For the "mail" filetype this
|
|
||||||
would be: >
|
|
||||||
:let no_mail_maps = 1
|
|
||||||
|
|
||||||
4. Disable defining mappings for all filetypes by setting a variable: >
|
|
||||||
:let no_plugin_maps = 1
|
|
||||||
<
|
|
||||||
|
|
||||||
*ftplugin-overrule*
|
|
||||||
If a global filetype plugin does not do exactly what you want, there are three
|
|
||||||
ways to change this:
|
|
||||||
|
|
||||||
1. Add a few settings.
|
|
||||||
You must create a new filetype plugin in a directory early in
|
|
||||||
'runtimepath'. For Unix, for example you could use this file: >
|
|
||||||
vim ~/.vim/ftplugin/fortran.vim
|
|
||||||
< You can set those settings and mappings that you would like to add. Note
|
|
||||||
that the global plugin will be loaded after this, it may overrule the
|
|
||||||
settings that you do here. If this is the case, you need to use one of the
|
|
||||||
following two methods.
|
|
||||||
|
|
||||||
2. Make a copy of the plugin and change it.
|
|
||||||
You must put the copy in a directory early in 'runtimepath'. For Unix, for
|
|
||||||
example, you could do this: >
|
|
||||||
cp $VIMRUNTIME/ftplugin/fortran.vim ~/.vim/ftplugin/fortran.vim
|
|
||||||
< Then you can edit the copied file to your liking. Since the b:did_ftplugin
|
|
||||||
variable will be set, the global plugin will not be loaded.
|
|
||||||
A disadvantage of this method is that when the distributed plugin gets
|
|
||||||
improved, you will have to copy and modify it again.
|
|
||||||
|
|
||||||
3. Overrule the settings after loading the global plugin.
|
|
||||||
You must create a new filetype plugin in a directory from the end of
|
|
||||||
'runtimepath'. For Unix, for example, you could use this file: >
|
|
||||||
vim ~/.vim/after/ftplugin/fortran.vim
|
|
||||||
< In this file you can change just those settings that you want to change.
|
|
||||||
|
|
||||||
==============================================================================
|
|
||||||
3. Docs for the default filetype plugins. *ftplugin-docs*
|
|
||||||
|
|
||||||
|
|
||||||
CHANGELOG *changelog-plugin*
|
|
||||||
|
|
||||||
Allows for easy entrance of Changelog entries in Changelog files. There are
|
|
||||||
some commands, mappings, and variables worth exploring:
|
|
||||||
|
|
||||||
Options:
|
|
||||||
'comments' is made empty to not mess up formatting.
|
|
||||||
'textwidth' is set to 78, which is standard.
|
|
||||||
'formatoptions' the 't' flag is added to wrap when inserting text.
|
|
||||||
|
|
||||||
Commands:
|
|
||||||
NewChangelogEntry Adds a new Changelog entry in an intelligent fashion
|
|
||||||
(see below).
|
|
||||||
|
|
||||||
Local mappings:
|
|
||||||
<Leader>o Starts a new Changelog entry in an equally intelligent
|
|
||||||
fashion (see below).
|
|
||||||
|
|
||||||
Global mappings:
|
|
||||||
NOTE: The global mappings are accessed by sourcing the
|
|
||||||
ftplugin/changelog.vim file first, e.g. with >
|
|
||||||
runtime ftplugin/man.vim
|
|
||||||
< in your |.vimrc|.
|
|
||||||
<Leader>o Switches to the ChangeLog buffer opened for the
|
|
||||||
current directory, or opens it in a new buffer if it
|
|
||||||
exists in the current directory. Then it does the
|
|
||||||
same as the local <Leader>o described above.
|
|
||||||
|
|
||||||
Variables:
|
|
||||||
g:changelog_timeformat The date (and time) format used in ChangeLog entries.
|
|
||||||
The format accepted is the same as for the
|
|
||||||
|strftime()| function.
|
|
||||||
The default is "%Y-%m-%d" which is the standard format
|
|
||||||
for many ChangeLog layouts.
|
|
||||||
g:changelog_username The name and email address of the user.
|
|
||||||
The default is deduced from environment variables and
|
|
||||||
system files. It searches /etc/passwd for the comment
|
|
||||||
part of the current user, which informally contains
|
|
||||||
the real name of the user up to the first separating
|
|
||||||
comma. then it checks the $NAME environment variable
|
|
||||||
and finally runs `whoami` and `hostname` to build an
|
|
||||||
email address. The final form is >
|
|
||||||
Full Name <user@host>
|
|
||||||
<
|
|
||||||
g:changelog_new_date_format
|
|
||||||
The format to use when creating a new date-entry.
|
|
||||||
The following table describes special tokens in the
|
|
||||||
string:
|
|
||||||
%% insert a single '%' character
|
|
||||||
%d insert the date from above
|
|
||||||
%u insert the user from above
|
|
||||||
%c where to position cursor when done
|
|
||||||
The default is "%d %u\n\n\t* %c\n\n", which produces
|
|
||||||
something like (| is where cursor will be, unless at
|
|
||||||
the start of the line where it denotes the beginning
|
|
||||||
of the line) >
|
|
||||||
|2003-01-14 Full Name <user@host>
|
|
||||||
|
|
|
||||||
| * |
|
|
||||||
<
|
|
||||||
g:changelog_new_entry_format
|
|
||||||
The format used when creating a new entry.
|
|
||||||
The following table describes special tokens in the
|
|
||||||
string:
|
|
||||||
%c where to position cursor when done
|
|
||||||
The default is "\t*%c", which produces something
|
|
||||||
similar to >
|
|
||||||
| * |
|
|
||||||
<
|
|
||||||
g:changelog_date_entry_search
|
|
||||||
The search pattern to use when searching for a
|
|
||||||
date-entry.
|
|
||||||
The same tokens that can be used for
|
|
||||||
g:changelog_new_date_format can be used here as well.
|
|
||||||
The default is '^\s*%d\_s*%u' which finds lines
|
|
||||||
matching the form >
|
|
||||||
|2003-01-14 Full Name <user@host>
|
|
||||||
< and some similar formats.
|
|
||||||
|
|
||||||
The Changelog entries are inserted where they add the least amount of text.
|
|
||||||
After figuring out the current date and user, the file is searched for an
|
|
||||||
entry beginning with the current date and user and if found adds another item
|
|
||||||
under it. If not found, a new entry and item is prepended to the beginning of
|
|
||||||
the Changelog.
|
|
||||||
|
|
||||||
|
|
||||||
FORTRAN *fortran-plugin*
|
|
||||||
|
|
||||||
Options:
|
|
||||||
'expandtab' is switched on to avoid tabs as required by the Fortran
|
|
||||||
standards unless the user has set fortran_have_tabs in .vimrc.
|
|
||||||
'textwidth' is set to 72 for fixed source format as required by the
|
|
||||||
Fortran standards and to 80 for free source format.
|
|
||||||
'formatoptions' is set to break code and comment lines and to preserve long
|
|
||||||
lines. You can format comments with |gq|.
|
|
||||||
For further discussion of fortran_have_tabs and the method used for the
|
|
||||||
detection of source format see |fortran-syntax|.
|
|
||||||
|
|
||||||
|
|
||||||
MAIL *mail-plugin*
|
|
||||||
|
|
||||||
Options:
|
|
||||||
'modeline' is switched off to avoid the danger of trojan horses, and to
|
|
||||||
avoid that a Subject line with "Vim:" in it will cause an
|
|
||||||
error message.
|
|
||||||
'textwidth' is set to 72. This is often recommended for e-mail.
|
|
||||||
'formatoptions' is set to break text lines and to repeat the comment leader
|
|
||||||
in new lines, so that a leading ">" for quotes is repeated.
|
|
||||||
You can also format quoted text with |gq|.
|
|
||||||
|
|
||||||
Local mappings:
|
|
||||||
<LocalLeader>q or \\MailQuote
|
|
||||||
Quotes the text selected in Visual mode, or from the cursor position
|
|
||||||
to the end of the file in Normal mode. This means "> " is inserted in
|
|
||||||
each line.
|
|
||||||
|
|
||||||
MAN *man-plugin* *:Man*
|
|
||||||
|
|
||||||
Displays a manual page in a nice way. Also see the user manual
|
|
||||||
|find-manpage|.
|
|
||||||
|
|
||||||
To start using the ":Man" command before any manual page was loaded, source
|
|
||||||
this script from your startup vimrc file: >
|
|
||||||
|
|
||||||
runtime ftplugin/man.vim
|
|
||||||
|
|
||||||
Options:
|
|
||||||
'iskeyword' the '.' character is added to be able to use CTRL-] on the
|
|
||||||
manual page name.
|
|
||||||
|
|
||||||
Commands:
|
|
||||||
Man {name} Display the manual page for {name} in a window.
|
|
||||||
Man {number} {name}
|
|
||||||
Display the manual page for {name} in a section {number}.
|
|
||||||
|
|
||||||
Global mapping:
|
|
||||||
<Leader>K Displays the manual page for the word under the cursor.
|
|
||||||
|
|
||||||
Local mappings:
|
|
||||||
CTRL-] Jump to the manual page for the word under the cursor.
|
|
||||||
CTRL-T Jump back to the previous manual page.
|
|
||||||
|
|
||||||
|
|
||||||
RPM SPEC *spec-plugin*
|
|
||||||
|
|
||||||
Since the text for this plugin is rather long it has been put in a separate
|
|
||||||
file: |pi_spec.txt|.
|
|
||||||
|
|
||||||
|
|
||||||
vim:tw=78:ts=8:ft=help:norl:
|
|
||||||
@@ -1,581 +0,0 @@
|
|||||||
*fold.txt* For Vim version 6.3. Last change: 2004 May 20
|
|
||||||
|
|
||||||
|
|
||||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
|
||||||
|
|
||||||
|
|
||||||
Folding *Folding* *folding*
|
|
||||||
|
|
||||||
You can find an introduction on folding in chapter 28 of the user manual.
|
|
||||||
|usr_28.txt|
|
|
||||||
|
|
||||||
1. Fold methods |fold-methods|
|
|
||||||
2. Fold commands |fold-commands|
|
|
||||||
3. Fold options |fold-options|
|
|
||||||
4. Behavior of folds |fold-behavior|
|
|
||||||
|
|
||||||
{Vi has no Folding}
|
|
||||||
{not available when compiled without the +folding feature}
|
|
||||||
|
|
||||||
==============================================================================
|
|
||||||
1. Fold methods *fold-methods*
|
|
||||||
|
|
||||||
The folding method can be set with the 'foldmethod' option.
|
|
||||||
|
|
||||||
When setting 'foldmethod' to a value other than "manual", all folds are
|
|
||||||
deleted and new ones created. Switching to the "manual" method doesn't remove
|
|
||||||
the existing folds. This can be used to first define the folds automatically
|
|
||||||
and then change them manually.
|
|
||||||
|
|
||||||
There are six methods to select folds:
|
|
||||||
manual manually define folds
|
|
||||||
indent more indent means a higher fold level
|
|
||||||
expr specify an expression to define folds
|
|
||||||
syntax folds defined by syntax highlighting
|
|
||||||
diff folds for unchanged text
|
|
||||||
marker folds defined by markers in the text
|
|
||||||
|
|
||||||
|
|
||||||
MANUAL *fold-manual*
|
|
||||||
|
|
||||||
Use commands to manually define the fold regions. This can also be used by a
|
|
||||||
script that parses text to find folds.
|
|
||||||
|
|
||||||
The level of a fold is only defined by its nesting. To increase the fold
|
|
||||||
level of a fold for a range of lines, define a fold inside it that has the
|
|
||||||
same lines.
|
|
||||||
|
|
||||||
The manual folds are lost when you abandon the file. To save the folds use
|
|
||||||
the |:mkview| command. The view can be restored later with |:loadview|.
|
|
||||||
|
|
||||||
|
|
||||||
INDENT *fold-indent*
|
|
||||||
|
|
||||||
The folds are automatically defined by the indent of the lines.
|
|
||||||
|
|
||||||
The foldlevel is computed from the indent of the line, divided by the
|
|
||||||
'shiftwidth' (rounded down). A sequence of lines with the same or higher fold
|
|
||||||
level form a fold, with the lines with a higher level forming a nested fold.
|
|
||||||
|
|
||||||
The nesting of folds is limited with 'foldnestmax'.
|
|
||||||
|
|
||||||
Some lines are ignored and get the fold level of the line above or below it,
|
|
||||||
whatever is the lowest. These are empty or white lines and lines starting
|
|
||||||
with a character in 'foldignore'. White space is skipped before checking for
|
|
||||||
characters in 'foldignore'. For C use "#" to ignore preprocessor lines.
|
|
||||||
|
|
||||||
When you want to ignore lines in another way, use the 'expr' method. The
|
|
||||||
|indent()| function can be used in 'foldexpr' to get the indent of a line.
|
|
||||||
|
|
||||||
|
|
||||||
EXPR *fold-expr*
|
|
||||||
|
|
||||||
The folds are automatically defined by their foldlevel, like with the "indent"
|
|
||||||
method. The value of the 'foldexpr' option is evaluated to get the foldlevel
|
|
||||||
of a line. Examples:
|
|
||||||
This will create a fold for all consecutive lines that start with a Tab: >
|
|
||||||
:set foldexpr=getline(v:lnum)[0]==\"\\t\"
|
|
||||||
This will call a function to compute the fold level: >
|
|
||||||
:set foldexpr=MyFoldLevel(v:lnum)
|
|
||||||
This will make a fold out of paragraphs separated by blank lines: >
|
|
||||||
:set foldexpr=getline(v:lnum)=~'^\\s*$'&&getline(v:lnum+1)=~'\\S'?'<1':1
|
|
||||||
this does the same: >
|
|
||||||
:set foldexpr=getline(v:lnum-1)=~'^\\s*$'&&getline(v:lnum)=~'\\S'?'>1':1
|
|
||||||
|
|
||||||
Note that backslashes must be used to escape characters that ":set" handles
|
|
||||||
differently (space, backslash, double quote, etc., see |option-backslash|).
|
|
||||||
|
|
||||||
These are the conditions with which the expression is evaluated:
|
|
||||||
- The current buffer and window are set for the line.
|
|
||||||
- The variable "v:lnum" is set to the line number.
|
|
||||||
- The result is used for the fold level in this way:
|
|
||||||
value meaning ~
|
|
||||||
0 the line is not in a fold
|
|
||||||
1, 2, .. the line is in a fold with this level
|
|
||||||
-1 the fold level is undefined, use the fold level of a
|
|
||||||
line before or after this line, whichever is the
|
|
||||||
lowest.
|
|
||||||
"=" use fold level from the previous line
|
|
||||||
"a1", "a2", .. add one, two, .. to the fold level of the previous
|
|
||||||
line
|
|
||||||
"s1", "s2", .. subtract one, two, .. from the fold level of the
|
|
||||||
previous line
|
|
||||||
"<1", "<2", .. a fold with this level ends at this line
|
|
||||||
">1", ">2", .. a fold with this level starts at this line
|
|
||||||
|
|
||||||
It is not required to mark the start (end) of a fold with ">1" ("<1"), a fold
|
|
||||||
will also start (end) when the fold level is higher (lower) than the fold
|
|
||||||
level of the previous line.
|
|
||||||
|
|
||||||
There must be no side effects from the expression. The text in the buffer,
|
|
||||||
cursor position, the search patterns, options etc. must not be changed.
|
|
||||||
|
|
||||||
If there is some error in the expression, or the resulting value isn't
|
|
||||||
recognized, there is no error message and the fold level will be zero.
|
|
||||||
For debugging the 'debug' option can be set to "msg", the error messages will
|
|
||||||
be visible then.
|
|
||||||
|
|
||||||
Note: Since the expression has to be evaluated for every line, this fold
|
|
||||||
method can be very slow!
|
|
||||||
|
|
||||||
Try to avoid the "=", "a" and "s" return values, since Vim often has to search
|
|
||||||
backwards for a line for which the fold level is defined. This can be slow.
|
|
||||||
|
|
||||||
|foldlevel()| can be useful to compute a fold level relative to a previous
|
|
||||||
fold level. But note that foldlevel() may return -1 if the level is not known
|
|
||||||
yet. And it returns the level at the start of the line, while a fold might
|
|
||||||
end in that line.
|
|
||||||
|
|
||||||
|
|
||||||
SYNTAX *fold-syntax*
|
|
||||||
|
|
||||||
A fold is defined by syntax items that have the "fold" argument. |:syn-fold|
|
|
||||||
|
|
||||||
The fold level is defined by nesting folds. The nesting of folds is limited
|
|
||||||
with 'foldnestmax'.
|
|
||||||
|
|
||||||
Be careful to specify proper syntax syncing. If this is not done right, folds
|
|
||||||
may differ from the displayed highlighting. This is especially relevant when
|
|
||||||
using patterns that match more than one line. In case of doubt, try using
|
|
||||||
brute-force syncing: >
|
|
||||||
:syn sync fromstart
|
|
||||||
|
|
||||||
|
|
||||||
DIFF *fold-diff*
|
|
||||||
|
|
||||||
The folds are automatically defined for text that is not part of a change or
|
|
||||||
close to a change.
|
|
||||||
|
|
||||||
This method only works properly when the 'diff' option is set for the current
|
|
||||||
window and changes are being displayed. Otherwise the whole buffer will be
|
|
||||||
one big fold.
|
|
||||||
|
|
||||||
The 'diffopt' option can be used to specify the context. That is, the number
|
|
||||||
of lines between the fold and a change that are not included in the fold. For
|
|
||||||
example, to use a context of 8 lines: >
|
|
||||||
:set diffopt=filler,context:8
|
|
||||||
The default context is six lines.
|
|
||||||
|
|
||||||
When 'scrollbind' is also set, Vim will attempt to keep the same folds open in
|
|
||||||
other diff windows, so that the same text is visible.
|
|
||||||
|
|
||||||
|
|
||||||
MARKER *fold-marker*
|
|
||||||
|
|
||||||
Markers in the text tell where folds start and end. This allows you to
|
|
||||||
precisely specify the folds. This will allow deleting and putting a fold,
|
|
||||||
without the risk of including the wrong lines. The 'foldtext' option is
|
|
||||||
normally set such that the text before the marker shows up in the folded line.
|
|
||||||
This makes it possible to give a name to the fold.
|
|
||||||
|
|
||||||
Markers can have a level included, or can use matching pairs. Including a
|
|
||||||
level is easier, you don't have to add end markers and avoid problems with
|
|
||||||
non-matching marker pairs. Example: >
|
|
||||||
/* global variables {{{1 */
|
|
||||||
int varA, varB;
|
|
||||||
|
|
||||||
/* functions {{{1 */
|
|
||||||
/* funcA() {{{2 */
|
|
||||||
void funcA() {}
|
|
||||||
|
|
||||||
/* funcB() {{{2 */
|
|
||||||
void funcB() {}
|
|
||||||
|
|
||||||
A fold starts at a "{{{" marker. The following number specifies the fold
|
|
||||||
level. What happens depends on the difference between the current fold level
|
|
||||||
and the level given by the marker:
|
|
||||||
1. If a marker with the same fold level is encountered, the previous fold
|
|
||||||
ends and another fold with the same level starts.
|
|
||||||
2. If a marker with a higher fold level is found, a nested fold is started.
|
|
||||||
3. if a marker with a lower fold level is found, all folds up to and including
|
|
||||||
this level end and a fold with the specified level starts.
|
|
||||||
|
|
||||||
The number indicates the fold level. A zero cannot be used.
|
|
||||||
You can use "}}}" with a digit to indicate the level of the fold that
|
|
||||||
ends. The fold level of the following line will be one less than the
|
|
||||||
indicated level. Note that Vim doesn't look back to the level of the matching
|
|
||||||
marker (that would take too much time). Example: >
|
|
||||||
|
|
||||||
{{{1
|
|
||||||
fold level here is 1
|
|
||||||
{{{3
|
|
||||||
fold level here is 3
|
|
||||||
}}}3
|
|
||||||
fold level here is 2
|
|
||||||
|
|
||||||
You can also use matching pairs of "{{{" and "}}}" markers to define folds.
|
|
||||||
Each "{{{" increases the fold level by one, each "}}}" decreases the fold
|
|
||||||
level by one. Be careful to keep the markers matching! Example: >
|
|
||||||
|
|
||||||
{{{
|
|
||||||
fold level here is 1
|
|
||||||
{{{
|
|
||||||
fold level here is 2
|
|
||||||
}}}
|
|
||||||
fold level here is 1
|
|
||||||
|
|
||||||
You can mix using markers with a number and without a number. A useful way of
|
|
||||||
doing this is to use numbered markers for large folds, and unnumbered markers
|
|
||||||
locally in a function. For example use level one folds for the sections of
|
|
||||||
your file like "structure definitions", "local variables" and "functions".
|
|
||||||
Use level 2 markers for each definition and function, Use unnumbered markers
|
|
||||||
inside functions. When you make changes in a function to split up folds, you
|
|
||||||
don't have to renumber the markers.
|
|
||||||
|
|
||||||
The markers can be set with the 'foldmarker' option. It is recommended to
|
|
||||||
keep this at the default value of "{{{,}}}", so that files can be exchanged
|
|
||||||
between Vim users. Only change it when it is required for the file (e.g., it
|
|
||||||
contains markers from another folding editor, or the default markers cause
|
|
||||||
trouble for the language of the file).
|
|
||||||
|
|
||||||
*fold-create-marker*
|
|
||||||
"zf" can be used to create a fold defined by markers. Vim will insert the
|
|
||||||
markers for you. Vim will append the start and end marker, as specified with
|
|
||||||
'foldmarker'. The markers are appended to the end of the line.
|
|
||||||
'commentstring' is used if it isn't empty.
|
|
||||||
This does not work properly when:
|
|
||||||
- The line already contains a marker with a level number. Vim then doesn't
|
|
||||||
know what to do.
|
|
||||||
- Folds nearby use a level number in their marker which gets in the way.
|
|
||||||
- The line is inside a comment, 'commentstring' isn't empty and nested
|
|
||||||
comments don't work. For example with C: adding /* {{{ */ inside a comment
|
|
||||||
will truncate the existing comment. Either put the marker before or after
|
|
||||||
the comment, or add the marker manually.
|
|
||||||
Generally it's not a good idea to let Vim create markers when you already have
|
|
||||||
markers with a level number.
|
|
||||||
|
|
||||||
*fold-delete-marker*
|
|
||||||
"zd" can be used to delete a fold defined by markers. Vim will delete the
|
|
||||||
markers for you. Vim will search for the start and end markers, as specified
|
|
||||||
with 'foldmarker', at the start and end of the fold. When the text around the
|
|
||||||
marker matches with 'commentstring', that text is deleted as well.
|
|
||||||
This does not work properly when:
|
|
||||||
- A line contains more than one marker and one of them specifies a level.
|
|
||||||
Only the first one is removed, without checking if this will have the
|
|
||||||
desired effect of deleting the fold.
|
|
||||||
- The marker contains a level number and is used to start or end several folds
|
|
||||||
at the same time.
|
|
||||||
|
|
||||||
==============================================================================
|
|
||||||
2. Fold commands *fold-commands* *E490*
|
|
||||||
|
|
||||||
All folding commands start with "z". Hint: the "z" looks like a folded piece
|
|
||||||
of paper, if you look at it from the side.
|
|
||||||
|
|
||||||
|
|
||||||
CREATING AND DELETING FOLDS ~
|
|
||||||
*zf* *E350*
|
|
||||||
zf{motion} or
|
|
||||||
{Visual}zf Operator to create a fold.
|
|
||||||
This only works when 'foldmethod' is "manual" or "marker".
|
|
||||||
The new fold will be closed for the "manual" method.
|
|
||||||
'foldenable' will be set.
|
|
||||||
Also see |fold-create-marker|.
|
|
||||||
|
|
||||||
*zF*
|
|
||||||
zF Create a fold for N lines. Works like "zf".
|
|
||||||
|
|
||||||
:{range}fo[ld] *:fold* *:fo*
|
|
||||||
Create a fold for the lines in {range}. Works like "zf".
|
|
||||||
|
|
||||||
*zd* *E351*
|
|
||||||
zd Delete one fold at the cursor. When the cursor is on folded
|
|
||||||
line, that fold is deleted. Nested folds are moved one level
|
|
||||||
up. In Visual mode all folds (partially) in the selected area
|
|
||||||
are deleted. Careful: This easily deletes more folds than you
|
|
||||||
expect and there is no undo.
|
|
||||||
This only works when 'foldmethod' is "manual" or "marker".
|
|
||||||
Also see |fold-delete-marker|.
|
|
||||||
|
|
||||||
*zD*
|
|
||||||
zD Delete folds recursively at the cursor. In Visual mode all
|
|
||||||
folds (partially) in the selected area and all nested folds in
|
|
||||||
them are deleted.
|
|
||||||
This only works when 'foldmethod' is "manual" or "marker".
|
|
||||||
Also see |fold-delete-marker|.
|
|
||||||
|
|
||||||
*zE* *E352*
|
|
||||||
zE Eliminate all folds in the window.
|
|
||||||
This only works when 'foldmethod' is "manual" or "marker".
|
|
||||||
Also see |fold-delete-marker|.
|
|
||||||
|
|
||||||
|
|
||||||
OPENING AND CLOSING FOLDS ~
|
|
||||||
|
|
||||||
A fold smaller than 'foldminlines' will always be displayed like it was open.
|
|
||||||
Therefore the commands below may work differently on small folds.
|
|
||||||
|
|
||||||
*zo*
|
|
||||||
zo Open one fold under the cursor. When a count is given, that
|
|
||||||
many folds deep will be opened. In Visual mode one level of
|
|
||||||
folds is opened for all lines in the selected area.
|
|
||||||
|
|
||||||
*zO*
|
|
||||||
zO Open all folds under the cursor recursively. Folds that don't
|
|
||||||
contain the cursor line are unchanged.
|
|
||||||
In Visual mode it opens all folds that are in the selected
|
|
||||||
area, also those that are only partly selected.
|
|
||||||
|
|
||||||
*zc*
|
|
||||||
zc Close one fold under the cursor. When a count is given, that
|
|
||||||
many folds deep are closed. In Visual mode one level of folds
|
|
||||||
is closed for all lines in the selected area.
|
|
||||||
'foldenable' will be set.
|
|
||||||
|
|
||||||
*zC*
|
|
||||||
zC Close all folds under the cursor recursively. Folds that
|
|
||||||
don't contain the cursor line are unchanged.
|
|
||||||
In Visual mode it closes all folds that are in the selected
|
|
||||||
area, also those that are only partly selected.
|
|
||||||
'foldenable' will be set.
|
|
||||||
|
|
||||||
*za*
|
|
||||||
za When on a closed fold: open it. When folds are nested, you
|
|
||||||
may have to use "za" several times. When a count is given,
|
|
||||||
that many closed folds are opened.
|
|
||||||
When on an open fold: close it and set 'foldenable'. This
|
|
||||||
will only close one level, since using "za" again will open
|
|
||||||
the fold. When a count is given that many folds will be
|
|
||||||
closed (that's not the same as repeating "za" that many
|
|
||||||
times).
|
|
||||||
|
|
||||||
*zA*
|
|
||||||
zA When on a closed fold: open it recursively.
|
|
||||||
When on an open fold: close it recursively and set
|
|
||||||
'foldenable'.
|
|
||||||
|
|
||||||
*zv*
|
|
||||||
zv View cursor line: Open just enough folds to make the line in
|
|
||||||
which the cursor is located not folded.
|
|
||||||
|
|
||||||
*zx*
|
|
||||||
zx Update folds: Undo manually opened and closed folds: re-apply
|
|
||||||
'foldlevel', then do "zv": View cursor line.
|
|
||||||
|
|
||||||
*zX*
|
|
||||||
zX Undo manually opened and closed folds: re-apply 'foldlevel'.
|
|
||||||
|
|
||||||
*zm*
|
|
||||||
zm Fold more: Subtract one from 'foldlevel'. If 'foldlevel' was
|
|
||||||
already zero nothing happens.
|
|
||||||
'foldenable' will be set.
|
|
||||||
|
|
||||||
*zM*
|
|
||||||
zM Close all folds: set 'foldlevel' to 0.
|
|
||||||
'foldenable' will be set.
|
|
||||||
|
|
||||||
*zr*
|
|
||||||
zr Reduce folding: Add one to 'foldlevel'.
|
|
||||||
|
|
||||||
*zR*
|
|
||||||
zR Open all folds. This sets 'foldlevel' to highest fold level.
|
|
||||||
|
|
||||||
*:foldo* *:foldopen*
|
|
||||||
:{range}foldo[pen][!]
|
|
||||||
Open folds in {range}. When [!] is added all folds are
|
|
||||||
opened. Useful to see all the text in {range}. Without [!]
|
|
||||||
one level of folds is opened.
|
|
||||||
|
|
||||||
*:foldc* *:foldclose*
|
|
||||||
:{range}foldc[lose][!]
|
|
||||||
Close folds in {range}. When [!] is added all folds are
|
|
||||||
closed. Useful to hide all the text in {range}. Without [!]
|
|
||||||
one level of folds is closed.
|
|
||||||
|
|
||||||
*zn*
|
|
||||||
zn Fold none: reset 'foldenable'. All folds will be open.
|
|
||||||
|
|
||||||
*zN*
|
|
||||||
zN Fold normal: set 'foldenable'. All folds will be as they
|
|
||||||
were before.
|
|
||||||
|
|
||||||
*zi*
|
|
||||||
zi Invert 'foldenable'.
|
|
||||||
|
|
||||||
|
|
||||||
MOVING OVER FOLDS ~
|
|
||||||
*[z*
|
|
||||||
[z Move to the start of the current open fold. If already at the
|
|
||||||
start, move to the start of the fold that contains it. If
|
|
||||||
there is no containing fold, the command fails.
|
|
||||||
When a count is used, repeats the command N times.
|
|
||||||
|
|
||||||
*]z*
|
|
||||||
]z Move to the end of the current open fold. If already at the
|
|
||||||
end, move to the end of the fold that contains it. If there
|
|
||||||
is no containing fold, the command fails.
|
|
||||||
When a count is used, repeats the command N times.
|
|
||||||
|
|
||||||
*zj*
|
|
||||||
zj Move downwards to the start of the next fold. A closed fold
|
|
||||||
is counted as one fold.
|
|
||||||
When a count is used, repeats the command N times.
|
|
||||||
This command can be used after an |operator|.
|
|
||||||
|
|
||||||
*zk*
|
|
||||||
zk Move upwards to the end of the previous fold. A closed fold
|
|
||||||
is counted as one fold.
|
|
||||||
When a count is used, repeats the command N times.
|
|
||||||
This command can be used after an |operator|.
|
|
||||||
|
|
||||||
|
|
||||||
EXECUTING COMMANDS ON FOLDS ~
|
|
||||||
|
|
||||||
:[range]foldd[oopen] {cmd} *:foldd* *:folddoopen*
|
|
||||||
Execute {cmd} on all lines that are not in a closed fold.
|
|
||||||
When [range] is given, only these lines are used.
|
|
||||||
Each time {cmd} is executed the cursor is positioned on the
|
|
||||||
line it is executed for.
|
|
||||||
This works like the ":global" command: First all lines that
|
|
||||||
are not in a closed fold are marked. Then the {cmd} is
|
|
||||||
executed for all marked lines. Thus when {cmd} changes the
|
|
||||||
folds, this has no influence on where it is executed (except
|
|
||||||
when lines are deleted, of course).
|
|
||||||
Example: >
|
|
||||||
:folddoopen s/end/loop_end/ge
|
|
||||||
< Note the use of the "e" flag to avoid getting an error message
|
|
||||||
where "end" doesn't match.
|
|
||||||
|
|
||||||
:[range]folddoc[losed] {cmd} *:folddoc* *:folddoclosed*
|
|
||||||
Execute {cmd} on all lines that are in a closed fold.
|
|
||||||
Otherwise like ":folddoopen".
|
|
||||||
|
|
||||||
==============================================================================
|
|
||||||
3. Fold options *fold-options*
|
|
||||||
|
|
||||||
COLORS *fold-colors*
|
|
||||||
|
|
||||||
The colors of a closed fold are set with the Folded group |hl-Folded|. The
|
|
||||||
colors of the fold column are set with the FoldColumn group |hl-FoldColumn|.
|
|
||||||
Example to set the colors: >
|
|
||||||
|
|
||||||
:highlight Folded guibg=grey guifg=blue
|
|
||||||
:highlight FoldColumn guibg=darkgrey guifg=white
|
|
||||||
|
|
||||||
|
|
||||||
FOLDLEVEL *fold-foldlevel*
|
|
||||||
|
|
||||||
'foldlevel' is a number option: The higher the more folded regions are open.
|
|
||||||
When 'foldlevel' is 0, all folds are closed.
|
|
||||||
When 'foldlevel' is positive, some folds closed.
|
|
||||||
When 'foldlevel' is very high, all folds are open.
|
|
||||||
'foldlevel' is applied when it is changed. After that manually folds can be
|
|
||||||
opened and closed.
|
|
||||||
When increased, folds above the new level are opened. No manually opened
|
|
||||||
folds will be closed.
|
|
||||||
When decreased, folds above the new level are closed. No manually closed
|
|
||||||
folds will be opened.
|
|
||||||
|
|
||||||
|
|
||||||
FOLDTEXT *fold-foldtext*
|
|
||||||
|
|
||||||
'foldtext' is a string option that specifies an expression. This expression
|
|
||||||
is evaluated to obtain the text displayed for a closed fold. Example: >
|
|
||||||
|
|
||||||
:set foldtext=v:folddashes.substitute(getline(v:foldstart),'/\\*\\\|\\*/\\\|{{{\\d\\=','','g')
|
|
||||||
|
|
||||||
This shows the first line of the fold, with "/*", "*/" and "{{{" removed.
|
|
||||||
Note the use of backslashes to avoid some characters to be interpreted by the
|
|
||||||
":set" command. It's simpler to define a function and call that: >
|
|
||||||
|
|
||||||
:set foldtext=MyFoldText()
|
|
||||||
:function MyFoldText()
|
|
||||||
: let line = getline(v:foldstart)
|
|
||||||
: let sub = substitute(line, '/\*\|\*/\|{{{\d\=', '', 'g')
|
|
||||||
: return v:folddashes . sub
|
|
||||||
:endfunction
|
|
||||||
|
|
||||||
Evaluating 'foldtext' is done in the |sandbox|. The current window is set to
|
|
||||||
the window that displays the line. Errors are ignored.
|
|
||||||
|
|
||||||
The default value is |foldtext()|. This returns a reasonable text for most
|
|
||||||
types of folding. If you don't like it, you can specify your own 'foldtext'
|
|
||||||
expression. It can use these special Vim variables:
|
|
||||||
v:foldstart line number of first line in the fold
|
|
||||||
v:foldend line number of last line in the fold
|
|
||||||
v:folddashes a string that contains dashes to represent the
|
|
||||||
foldlevel.
|
|
||||||
v:foldlevel the foldlevel of the fold
|
|
||||||
|
|
||||||
In the result a TAB is replaced with a space and unprintable characters are
|
|
||||||
made into printable characters.
|
|
||||||
|
|
||||||
The resulting line is truncated to fit in the window, it never wraps.
|
|
||||||
When there is room after the text, it is filled with the character specified
|
|
||||||
by 'fillchars'.
|
|
||||||
|
|
||||||
Note that backslashes need to be used for characters that the ":set" command
|
|
||||||
handles differently: Space, backslash and double-quote. |option-backslash|
|
|
||||||
|
|
||||||
|
|
||||||
FOLDCOLUMN *fold-foldcolumn*
|
|
||||||
|
|
||||||
'foldcolumn' is a number, which sets the width for a column on the side of the
|
|
||||||
window to indicate folds. When it is zero, there is no foldcolumn. A normal
|
|
||||||
value is 4 or 5. The minimal useful value is 2. The maximum is 12.
|
|
||||||
|
|
||||||
An open fold is indicated with a column that has a '-' at the top and '|'
|
|
||||||
characters below it. This column stops where the open fold stops. When folds
|
|
||||||
nest, the nested fold is one character right of the fold it's contained in.
|
|
||||||
|
|
||||||
A closed fold is indicated with a '+'.
|
|
||||||
|
|
||||||
Where the fold column is too narrow to display all nested folds, digits are
|
|
||||||
shown to indicate the nesting level.
|
|
||||||
|
|
||||||
The mouse can also be used to open and close folds by clicking in the
|
|
||||||
fold column:
|
|
||||||
- Click on a '+' to open the closed fold at this row.
|
|
||||||
- Click on any other non-blank character to close the open fold at this row.
|
|
||||||
|
|
||||||
|
|
||||||
OTHER OPTIONS
|
|
||||||
|
|
||||||
'foldenable' 'fen': Open all folds while not set.
|
|
||||||
'foldexpr' 'fde': Expression used for "expr" folding.
|
|
||||||
'foldignore' 'fdi': Characters used for "indent" folding.
|
|
||||||
'foldmarker' 'fmr': Defined markers used for "marker" folding.
|
|
||||||
'foldmethod' 'fdm': Name of the current folding method.
|
|
||||||
'foldminlines' 'fml': Minimum number of screen lines for a fold to be
|
|
||||||
displayed closed.
|
|
||||||
'foldnestmax' 'fdn': Maximum nesting for "indent" and "syntax" folding.
|
|
||||||
'foldopen' 'fdo': Which kinds of commands open closed folds.
|
|
||||||
'foldclose' 'fcl': When the folds not under the cursor are closed.
|
|
||||||
|
|
||||||
==============================================================================
|
|
||||||
4. Behavior of folds *fold-behavior*
|
|
||||||
|
|
||||||
When moving the cursor upwards or downwards and when scrolling, the cursor
|
|
||||||
will move to the first line of a sequence of folded lines. When the cursor is
|
|
||||||
already on a folded line, it moves to the next unfolded line or the next
|
|
||||||
closed fold.
|
|
||||||
|
|
||||||
While the cursor is on folded lines, the cursor is always displayed in the
|
|
||||||
first column. The ruler does show the actual cursor position, but since the
|
|
||||||
line is folded, it cannot be displayed there.
|
|
||||||
|
|
||||||
Many movement commands handle a sequence of folded lines like an empty line.
|
|
||||||
For example, the "w" command stops once in the first column.
|
|
||||||
|
|
||||||
When in Insert mode, the cursor line is never folded. That allows you to see
|
|
||||||
what you type!
|
|
||||||
|
|
||||||
When using an operator, a closed fold is included as a whole. Thus "dl"
|
|
||||||
deletes the whole closed fold under the cursor.
|
|
||||||
|
|
||||||
For Ex commands the range is adjusted to always start at the first line of a
|
|
||||||
fold and end at the last line of a fold. Thus this command: >
|
|
||||||
:s/foo/bar/g
|
|
||||||
when used with the cursor on a closed fold, will replace "foo" with "bar" in
|
|
||||||
all lines of the fold.
|
|
||||||
This does not happen for |:folddoopen| and |:folddoclosed|.
|
|
||||||
|
|
||||||
When editing a buffer that has been edited before, the last used folding
|
|
||||||
settings are used again. For manual folding the defined folds are restored.
|
|
||||||
For all folding methods the manually opened and closed folds are restored.
|
|
||||||
If this buffer has been edited in this window, the values from back then are
|
|
||||||
used. Otherwise the values from the window where the buffer was edited last
|
|
||||||
are used.
|
|
||||||
|
|
||||||
==============================================================================
|
|
||||||
vim:tw=78:ts=8:ft=help:norl:
|
|
||||||
@@ -1,951 +0,0 @@
|
|||||||
*gui.txt* For Vim version 6.3. Last change: 2004 Jun 02
|
|
||||||
|
|
||||||
|
|
||||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
|
||||||
|
|
||||||
|
|
||||||
Vim's Graphical User Interface *gui* *GUI*
|
|
||||||
|
|
||||||
1. Starting the GUI |gui-start|
|
|
||||||
2. Scrollbars |gui-scrollbars|
|
|
||||||
3. Mouse Control |gui-mouse|
|
|
||||||
4. Making GUI Selections |gui-selections|
|
|
||||||
5. Menus |menus|
|
|
||||||
6. Extras |gui-extras|
|
|
||||||
7. Shell Commands |gui-shell|
|
|
||||||
|
|
||||||
Other GUI documentation:
|
|
||||||
|gui_x11.txt| For specific items of the X11 GUI.
|
|
||||||
|gui_w32.txt| For specific items of the Win32 GUI.
|
|
||||||
|
|
||||||
{Vi does not have any of these commands}
|
|
||||||
|
|
||||||
==============================================================================
|
|
||||||
1. Starting the GUI *gui-start* *E229* *E233*
|
|
||||||
|
|
||||||
First you must make sure you actually have a version of Vim with the GUI code
|
|
||||||
included. You can check this with the ":version" command, it should include
|
|
||||||
"+GUI_Athena", "+GUI_BeOS", "+GUI_GTK", "+GUI_Motif" or "MS-Windows ... bit
|
|
||||||
GUI version".
|
|
||||||
|
|
||||||
How to start the GUI depends on the system used. Mostly you can run the
|
|
||||||
GUI version of Vim with:
|
|
||||||
gvim [options] [files...]
|
|
||||||
|
|
||||||
The X11 version of Vim can run both in GUI and in non-GUI mode. See
|
|
||||||
|gui-x11-start|.
|
|
||||||
|
|
||||||
*gui-init* *gvimrc* *.gvimrc* *_gvimrc*
|
|
||||||
When the GUI starts up initializations are carried out, in this order:
|
|
||||||
- The termcap options are reset to their default value for the GUI.
|
|
||||||
- If the system menu file exists, it is sourced. The name of this file is
|
|
||||||
normally "$VIMRUNTIME/menu.vim". You can check this with ":version". Also
|
|
||||||
see |$VIMRUNTIME|. To skip loading the system menu include 'M' in
|
|
||||||
'guioptions'. *buffers-menu* *no_buffers_menu*
|
|
||||||
The system menu file includes a "Buffers" menu. If you don't want this, set
|
|
||||||
the "no_buffers_menu" variable in your .vimrc (not .gvimrc!): >
|
|
||||||
:let no_buffers_menu = 1
|
|
||||||
< NOTE: Switching on syntax highlighting also loads the menu file, thus
|
|
||||||
disabling the Buffers menu must be done before ":syntax on".
|
|
||||||
The path names are truncated to 35 characters. You can truncate them at a
|
|
||||||
different length, for example 50, like this: >
|
|
||||||
:let bmenu_max_pathlen = 50
|
|
||||||
- If the "-U {gvimrc}" command-line option has been used when starting Vim,
|
|
||||||
the {gvimrc} file will be read for initializations. The following
|
|
||||||
initializations are skipped.
|
|
||||||
- For Unix and MS-Windows, if the system gvimrc exists, it is sourced. The
|
|
||||||
name of this file is normally "$VIM/gvimrc". You can check this with
|
|
||||||
":version". Also see |$VIM|.
|
|
||||||
- The following are tried, and only the first one that exists is used:
|
|
||||||
- If the GVIMINIT environment variable exists and is not empty, it is
|
|
||||||
executed as an Ex command.
|
|
||||||
- If the user gvimrc file exists, it is sourced. The name of this file is
|
|
||||||
normally "$HOME/.gvimrc". You can check this with ":version".
|
|
||||||
- For Win32, when $HOME is not set, "$VIM\_gvimrc" is used.
|
|
||||||
- When a "_gvimrc" file is not found, ".gvimrc" is tried too. And vice
|
|
||||||
versa.
|
|
||||||
- If the 'exrc' option is set (which is NOT the default) the file ./.gvimrc
|
|
||||||
is sourced, if it exists and isn't the same file as the system or user
|
|
||||||
gvimrc file. If this file is not owned by you, some security restrictions
|
|
||||||
apply. When ".gvimrc" is not found, "_gvimrc" is tried too. For Macintosh
|
|
||||||
and DOS/Win32 "_gvimrc" is tried first.
|
|
||||||
|
|
||||||
NOTE: All but the first one are not carried out if Vim was started with
|
|
||||||
"-u NONE" and no "-U" argument was given, or when started with "-U NONE".
|
|
||||||
|
|
||||||
All this happens AFTER the normal Vim initializations, like reading your
|
|
||||||
.vimrc file. See |initialization|.
|
|
||||||
But the GUI window is only opened after all the initializations have been
|
|
||||||
carried out. If you want some commands to be executed just after opening the
|
|
||||||
GUI window, use the |GUIEnter| autocommand event. Example: >
|
|
||||||
:autocommand GUIEnter * winpos 100 50
|
|
||||||
|
|
||||||
You can use the gvimrc files to set up your own customized menus (see |:menu|)
|
|
||||||
and initialize other things that you may want to set up differently from the
|
|
||||||
terminal version.
|
|
||||||
|
|
||||||
Recommended place for your personal GUI initializations:
|
|
||||||
Unix $HOME/.gvimrc
|
|
||||||
OS/2 $HOME/.gvimrc or $VIM/.gvimrc
|
|
||||||
MS-DOS and Win32 $HOME/_gvimrc or $VIM/_gvimrc
|
|
||||||
Amiga s:.gvimrc or $VIM/.gvimrc
|
|
||||||
|
|
||||||
There are a number of options which only have meaning in the GUI version of
|
|
||||||
Vim. These are 'guicursor', 'guifont', 'guipty' and 'guioptions'. They are
|
|
||||||
documented in |options.txt| with all the other options.
|
|
||||||
|
|
||||||
If using the Motif or Athena version of the GUI (but not for the GTK+ or Win32
|
|
||||||
version), a number of X resources are available. See |gui-resources|.
|
|
||||||
|
|
||||||
Another way to set the colors for different occasions is with highlight
|
|
||||||
groups. The "Normal" group is used to set the background and foreground
|
|
||||||
colors. Example (which looks nice): >
|
|
||||||
|
|
||||||
:highlight Normal guibg=grey90
|
|
||||||
|
|
||||||
The "guibg" and "guifg" settings override the normal background and
|
|
||||||
foreground settings. The other settings for the Normal highlight group are
|
|
||||||
not used. Use the 'guifont' option to set the font.
|
|
||||||
|
|
||||||
Also check out the 'guicursor' option, to set the colors for the cursor in
|
|
||||||
various modes.
|
|
||||||
|
|
||||||
Vim tries to make the window fit on the screen when it starts up. This avoids
|
|
||||||
that you can't see part of it. On the X Window System this requires a bit of
|
|
||||||
guesswork. You can change the height that is used for the window title and a
|
|
||||||
task bar with the 'guiheadroom' option.
|
|
||||||
|
|
||||||
*:winp* *:winpos* *E188*
|
|
||||||
:winp[os]
|
|
||||||
Display current position of the top left corner of the GUI vim
|
|
||||||
window in pixels. Does not work in all versions.
|
|
||||||
|
|
||||||
:winp[os] {X} {Y} *E466*
|
|
||||||
Put the GUI vim window at the given {X} and {Y} coordinates.
|
|
||||||
The coordinates should specify the position in pixels of the
|
|
||||||
top left corner of the window. Does not work in all versions.
|
|
||||||
Does work in an (new) xterm |xterm-color|.
|
|
||||||
When the GUI window has not been opened yet, the values are
|
|
||||||
remembered until the window is opened. The position is
|
|
||||||
adjusted to make the window fit on the screen (if possible).
|
|
||||||
|
|
||||||
*:win* *:winsize* *E465*
|
|
||||||
:win[size] {width} {height}
|
|
||||||
Set the window height to {width} by {height} characters.
|
|
||||||
Obsolete, use ":set lines=11 columns=22".
|
|
||||||
If you get less lines than expected, check the 'guiheadroom'
|
|
||||||
option.
|
|
||||||
|
|
||||||
If you are running the X Window System, you can get information about the
|
|
||||||
window Vim is running in with this command: >
|
|
||||||
:!xwininfo -id $WINDOWID
|
|
||||||
|
|
||||||
==============================================================================
|
|
||||||
2. Scrollbars *gui-scrollbars*
|
|
||||||
|
|
||||||
There are vertical scrollbars and a horizontal scrollbars. You may
|
|
||||||
configure which ones appear with the 'guioptions' option.
|
|
||||||
|
|
||||||
The interface looks like this (with ":set guioptions=mlrb"):
|
|
||||||
|
|
||||||
+------------------------------+
|
|
||||||
| File Edit Help | <- Menu bar (m)
|
|
||||||
+-+--------------------------+-+
|
|
||||||
|^| |^|
|
|
||||||
|#| Text area. |#|
|
|
||||||
| | | |
|
|
||||||
|v|__________________________|v|
|
|
||||||
Normal status line -> |-+ File.c 5,2 +-|
|
|
||||||
between Vim windows |^|""""""""""""""""""""""""""|^|
|
|
||||||
| | | |
|
|
||||||
| | Another file buffer. | |
|
|
||||||
| | | |
|
|
||||||
|#| |#|
|
|
||||||
Left scrollbar (l) -> |#| |#| <- Right
|
|
||||||
|#| |#| scrollbar (r)
|
|
||||||
| | | |
|
|
||||||
|v| |v|
|
|
||||||
+-+--------------------------+-+
|
|
||||||
| |< #### >| | <- Bottom
|
|
||||||
+-+--------------------------+-+ scrollbar (b)
|
|
||||||
|
|
||||||
Any of the scrollbar or menu components may be turned off by not putting the
|
|
||||||
appropriate letter in the 'guioptions' string. The bottom scrollbar is
|
|
||||||
only useful when 'nowrap' is set.
|
|
||||||
|
|
||||||
|
|
||||||
VERTICAL SCROLLBARS *gui-vert-scroll*
|
|
||||||
|
|
||||||
Each Vim window has a scrollbar next to it which may be scrolled up and down
|
|
||||||
to move through the text in that buffer. The size of the scrollbar-thumb
|
|
||||||
indicates the fraction of the buffer which can be seen in the window.
|
|
||||||
When the scrollbar is dragged all the way down, the last line of the file
|
|
||||||
will appear in the top of the window.
|
|
||||||
|
|
||||||
If a window is shrunk to zero height (by the growth of another window) its
|
|
||||||
scrollbar disappears. It reappears when the window is restored.
|
|
||||||
|
|
||||||
If a window is vertically split, it will get a scrollbar when it is the
|
|
||||||
current window and when, taking the middle of the current window and drawing a
|
|
||||||
vertical line, this line goes through the window.
|
|
||||||
When there are scrollbars on both sides, and the middle of the current window
|
|
||||||
is on the left half, the right scrollbar column will contain scrollbars for
|
|
||||||
the rightmost windows. The same happens on the other side.
|
|
||||||
|
|
||||||
|
|
||||||
HORIZONTAL SCROLLBARS *gui-horiz-scroll*
|
|
||||||
|
|
||||||
The horizontal scrollbar (at the bottom of the Vim GUI) may be used to
|
|
||||||
scroll text sideways when the 'wrap' option is turned off. The
|
|
||||||
scrollbar-thumb size is such that the text of the longest visible line may be
|
|
||||||
scrolled as far as possible left and right. The cursor is moved when
|
|
||||||
necessary, it must remain on a visible character (unless 'virtualedit' is
|
|
||||||
set).
|
|
||||||
|
|
||||||
Computing the length of the longest visible takes quite a bit of computation,
|
|
||||||
and it has to be done every time something changes. If this takes too much
|
|
||||||
time or you don't like the cursor jumping to another line, include the 'h'
|
|
||||||
flag in 'guioptions'. Then the scrolling is limited by the text of the
|
|
||||||
current cursor line.
|
|
||||||
|
|
||||||
*athena-intellimouse*
|
|
||||||
If you have an Intellimouse and an X server that supports using the wheel,
|
|
||||||
then you can use the wheel to scroll the text up and down in gvim. This works
|
|
||||||
with XFree86 4.0 and later, and with some older versions when you add patches.
|
|
||||||
See |scroll-mouse-wheel|.
|
|
||||||
|
|
||||||
For older versions of XFree86 you must patch your X server. The following
|
|
||||||
page has a bit of information about using the Intellimouse on Linux as well as
|
|
||||||
links to the patches and X server binaries (may not have the one you need
|
|
||||||
though):
|
|
||||||
http://www.inria.fr/koala/colas/mouse-wheel-scroll/
|
|
||||||
|
|
||||||
==============================================================================
|
|
||||||
3. Mouse Control *gui-mouse*
|
|
||||||
|
|
||||||
The mouse only works if the appropriate flag in the 'mouse' option is set.
|
|
||||||
When the GUI is switched on, and 'mouse' wasn't set yet, the 'mouse' option is
|
|
||||||
automatically set to "a", enabling it for all modes except for the
|
|
||||||
|hit-enter| prompt. If you don't want this, a good place to change the
|
|
||||||
'mouse' option is the "gvimrc" file.
|
|
||||||
|
|
||||||
Other options that are relevant:
|
|
||||||
'mousefocus' window focus follows mouse pointer |gui-mouse-focus|
|
|
||||||
'mousemodel' what mouse button does which action
|
|
||||||
'mousehide' hide mouse pointer while typing text
|
|
||||||
'selectmode' whether to start Select mode or Visual mode
|
|
||||||
|
|
||||||
A quick way to set these is with the ":behave" command.
|
|
||||||
*:behave* *:be*
|
|
||||||
:be[have] {model} Set behavior for mouse and selection. Valid
|
|
||||||
arguments are:
|
|
||||||
mswin MS-Windows behavior
|
|
||||||
xterm Xterm behavior
|
|
||||||
|
|
||||||
Using ":behave" changes these options:
|
|
||||||
option mswin xterm ~
|
|
||||||
'selectmode' "mouse,key" ""
|
|
||||||
'mousemodel' "popup" "extend"
|
|
||||||
'keymodel' "startsel,stopsel" ""
|
|
||||||
'selection' "exclusive" "inclusive"
|
|
||||||
|
|
||||||
In the $VIMRUNTIME directory, there is a script called |mswin.vim|, which will
|
|
||||||
also map a few keys to the MS-Windows cut/copy/paste commands. This is NOT
|
|
||||||
compatible, since it uses the CTRL-V, CTRL-X and CTRL-C keys. If you don't
|
|
||||||
mind, use this command: >
|
|
||||||
:so $VIMRUNTIME/mswin.vim
|
|
||||||
|
|
||||||
For scrolling with a wheel on a mouse, see |scroll-mouse-wheel|.
|
|
||||||
|
|
||||||
|
|
||||||
3.1 Moving Cursor with Mouse *gui-mouse-move*
|
|
||||||
|
|
||||||
Click the left mouse button somewhere in a text buffer where you want the
|
|
||||||
cursor to go, and it does!
|
|
||||||
This works in when 'mouse' contains ~
|
|
||||||
Normal mode 'n' or 'a'
|
|
||||||
Visual mode 'v' or 'a'
|
|
||||||
Insert mode 'i' or 'a'
|
|
||||||
|
|
||||||
Select mode is handled like Visual mode.
|
|
||||||
|
|
||||||
You may use this with an operator such as 'd' to delete text from the current
|
|
||||||
cursor position to the position you point to with the mouse. That is, you hit
|
|
||||||
'd' and then click the mouse somewhere.
|
|
||||||
|
|
||||||
*gui-mouse-focus*
|
|
||||||
The 'mousefocus' option can be set to make the keyboard focus follow the
|
|
||||||
mouse pointer. This means that the window where the mouse pointer is, is the
|
|
||||||
active window. Warning: this doesn't work very well when using a menu,
|
|
||||||
because the menu command will always be applied to the top window.
|
|
||||||
|
|
||||||
If you are on the ':' line (or '/' or '?'), then clicking the left or right
|
|
||||||
mouse button will position the cursor on the ':' line (if 'mouse' contains
|
|
||||||
'c', 'a' or 'A').
|
|
||||||
|
|
||||||
In any situation the middle mouse button may be clicked to paste the current
|
|
||||||
selection.
|
|
||||||
|
|
||||||
|
|
||||||
3.2 Selection with Mouse *gui-mouse-select*
|
|
||||||
|
|
||||||
The mouse can be used to start a selection. How depends on the 'mousemodel'
|
|
||||||
option:
|
|
||||||
'mousemodel' is "extend": use the right mouse button
|
|
||||||
'mousemodel' is "popup": use the left mouse button, while keeping the Shift
|
|
||||||
key pressed.
|
|
||||||
|
|
||||||
If there was no selection yet, this starts a selection from the old cursor
|
|
||||||
position to the position pointed to with the mouse. If there already is a
|
|
||||||
selection then the closest end will be extended.
|
|
||||||
|
|
||||||
If 'selectmode' contains "mouse", then the selection will be in Select mode.
|
|
||||||
This means that typing normal text will replace the selection. See
|
|
||||||
|Select-mode|. Otherwise, the selection will be in Visual mode.
|
|
||||||
|
|
||||||
Double clicking may be done to make the selection word-wise, triple clicking
|
|
||||||
makes it line-wise, and quadruple clicking makes it rectangular block-wise.
|
|
||||||
|
|
||||||
See |gui-selections| on how the selection is used.
|
|
||||||
|
|
||||||
|
|
||||||
3.3 Other Text Selection with Mouse *gui-mouse-modeless*
|
|
||||||
*modeless-selection*
|
|
||||||
A different kind of selection is used when:
|
|
||||||
- in Command-line mode
|
|
||||||
- in the Command-line window and pointing in another window
|
|
||||||
- at the |hit-enter| prompt
|
|
||||||
- whenever the current mode is not in the 'mouse' option
|
|
||||||
- when holding the CTRL and SHIFT keys in the GUI
|
|
||||||
Since Vim continues like the selection isn't there, and there is no mode
|
|
||||||
associated with the selection, this is called modeless selection. Any text in
|
|
||||||
the Vim window can be selected. Select the text by pressing the left mouse
|
|
||||||
button at the start, drag to the end and release. To extend the selection,
|
|
||||||
use the right mouse button when 'mousemodel' is "extend", or the left mouse
|
|
||||||
button with the shift key pressed when 'mousemodel' is "popup".
|
|
||||||
The middle mouse button pastes the text.
|
|
||||||
The selection is removed when the selected text is scrolled or changed.
|
|
||||||
On the command line CTRL-Y can be used to copy the selection into the
|
|
||||||
clipboard. To do this from Insert mode, use CTRL-O : CTRL-Y <CR>.
|
|
||||||
|
|
||||||
|
|
||||||
3.4 Using Mouse on Status Lines *gui-mouse-status*
|
|
||||||
|
|
||||||
Clicking the left or right mouse button on the status line below a Vim
|
|
||||||
window makes that window the current window. This actually happens on button
|
|
||||||
release (to be able to distinguish a click from a drag action).
|
|
||||||
|
|
||||||
With the left mouse button a status line can be dragged up and down, thus
|
|
||||||
resizing the windows above and below it. This does not change window focus.
|
|
||||||
|
|
||||||
The same can be used on the vertical separator: click to give the window left
|
|
||||||
of it focus, drag left and right to make windows wider and narrower.
|
|
||||||
|
|
||||||
|
|
||||||
3.5 Various Mouse Clicks *gui-mouse-various*
|
|
||||||
|
|
||||||
<S-LeftMouse> Search forward for the word under the mouse click.
|
|
||||||
When 'mousemodel' is "popup" this starts or extends a
|
|
||||||
selection.
|
|
||||||
<S-RightMouse> Search backward for the word under the mouse click.
|
|
||||||
<C-LeftMouse> Jump to the tag name under the mouse click.
|
|
||||||
<C-RightMouse> Jump back to position before the previous tag jump
|
|
||||||
(same as "CTRL-T")
|
|
||||||
|
|
||||||
|
|
||||||
3.6 Mouse Mappings *gui-mouse-mapping*
|
|
||||||
|
|
||||||
The mouse events, complete with modifiers, may be mapped. Eg: >
|
|
||||||
:map <S-LeftMouse> <RightMouse>
|
|
||||||
:map <S-LeftDrag> <RightDrag>
|
|
||||||
:map <S-LeftRelease> <RightRelease>
|
|
||||||
:map <2-S-LeftMouse> <2-RightMouse>
|
|
||||||
:map <2-S-LeftDrag> <2-RightDrag>
|
|
||||||
:map <2-S-LeftRelease> <2-RightRelease>
|
|
||||||
:map <3-S-LeftMouse> <3-RightMouse>
|
|
||||||
:map <3-S-LeftDrag> <3-RightDrag>
|
|
||||||
:map <3-S-LeftRelease> <3-RightRelease>
|
|
||||||
:map <4-S-LeftMouse> <4-RightMouse>
|
|
||||||
:map <4-S-LeftDrag> <4-RightDrag>
|
|
||||||
:map <4-S-LeftRelease> <4-RightRelease>
|
|
||||||
These mappings make selection work the way it probably should in a Motif
|
|
||||||
application, with shift-left mouse allowing for extending the visual area
|
|
||||||
rather than the right mouse button.
|
|
||||||
|
|
||||||
Mouse mapping with modifiers does not work for modeless selection.
|
|
||||||
|
|
||||||
|
|
||||||
3.7 Drag and drop *drag-n-drop*
|
|
||||||
|
|
||||||
You can drag and drop one or more files into the Vim window, where they will
|
|
||||||
be opened as if a |:drop| command was used.
|
|
||||||
|
|
||||||
If you hold down Shift while doing this, Vim changes to the first dropped
|
|
||||||
file's directory. If you hold Ctrl Vim will always split a new window for the
|
|
||||||
file. Otherwise it's only done if the current buffer has been changed.
|
|
||||||
|
|
||||||
You can also drop a directory on Vim. This starts the explorer plugin for
|
|
||||||
that directory (assuming it was enabled, otherwise you'll get an error
|
|
||||||
message). Keep Shift pressed to change to the directory instead.
|
|
||||||
|
|
||||||
If Vim happens to be editing a command line, the names of the dropped files
|
|
||||||
and directories will be inserted at the cursor. This allows you to use these
|
|
||||||
names with any Ex command. Special characters (space, tab, double quote and
|
|
||||||
'|'; backslash on non-MS-Windows systems) will be escaped.
|
|
||||||
|
|
||||||
==============================================================================
|
|
||||||
4. Making GUI Selections *gui-selections*
|
|
||||||
|
|
||||||
*quotestar*
|
|
||||||
You may make selections with the mouse (see |gui-mouse-select|), or by using
|
|
||||||
Vim's Visual mode (see |v|). If 'a' is present in 'guioptions', then
|
|
||||||
whenever a selection is started (Visual or Select mode), or when the selection
|
|
||||||
is changed, Vim becomes the owner of the windowing system's primary selection
|
|
||||||
(on MS-Windows the |gui-clipboard| is used; under X11, the |x11-selection| is
|
|
||||||
used - you should read whichever of these is appropriate now).
|
|
||||||
|
|
||||||
*clipboard*
|
|
||||||
There is a special register for storing this selection, it is the "*
|
|
||||||
register. Nothing is put in here unless the information about what text is
|
|
||||||
selected is about to change (eg with a left mouse click somewhere), or when
|
|
||||||
another application wants to paste the selected text. Then the text is put
|
|
||||||
in the "* register. For example, to cut a line and make it the current
|
|
||||||
selection/put it on the clipboard: >
|
|
||||||
|
|
||||||
"*dd
|
|
||||||
|
|
||||||
Similarly, when you want to paste a selection from another application, e.g.,
|
|
||||||
by clicking the middle mouse button, the selection is put in the "* register
|
|
||||||
first, and then 'put' like any other register. For example, to put the
|
|
||||||
selection (contents of the clipboard): >
|
|
||||||
|
|
||||||
"*p
|
|
||||||
|
|
||||||
When using this register under X11, also see |x11-selection|. This also
|
|
||||||
explains the related "+ register.
|
|
||||||
|
|
||||||
Note that when pasting text from one Vim into another separate Vim, the type
|
|
||||||
of selection (character, line, or block) will also be copied. For other
|
|
||||||
applications the type is always character. However, if the text gets
|
|
||||||
transferred via the |x11-cut-buffer|, the selection type is ALWAYS lost.
|
|
||||||
|
|
||||||
When the "unnamed" string is included in the 'clipboard' option, the unnamed
|
|
||||||
register is the same as the "* register. Thus you can yank to and paste the
|
|
||||||
selection without prepending "* to commands.
|
|
||||||
|
|
||||||
==============================================================================
|
|
||||||
5. Menus *menus*
|
|
||||||
|
|
||||||
For an introduction see |usr_42.txt| in the user manual.
|
|
||||||
|
|
||||||
|
|
||||||
5.1 Using Menus *using-menus*
|
|
||||||
|
|
||||||
Basically, menus can be used just like mappings. You can define your own
|
|
||||||
menus, as many as you like.
|
|
||||||
Long-time Vim users won't use menus much. But the power is in adding your own
|
|
||||||
menus and menu items. They are most useful for things that you can't remember
|
|
||||||
what the key sequence was.
|
|
||||||
|
|
||||||
For creating menus in a different language, see |:menutrans|.
|
|
||||||
|
|
||||||
*menu.vim*
|
|
||||||
The default menus are read from the file "$VIMRUNTIME/menu.vim". See
|
|
||||||
|$VIMRUNTIME| for where the path comes from. You can set up your own menus.
|
|
||||||
Starting off with the default set is a good idea. You can add more items, or,
|
|
||||||
if you don't like the defaults at all, start with removing all menus
|
|
||||||
|:unmenu-all|. You can also avoid the default menus being loaded by adding
|
|
||||||
this line to your .vimrc file (NOT your .gvimrc file!): >
|
|
||||||
:let did_install_default_menus = 1
|
|
||||||
If you also want to avoid the Syntax menu: >
|
|
||||||
:let did_install_syntax_menu = 1
|
|
||||||
If you do want the Syntax menu but not all the entries for each available
|
|
||||||
syntax file (which take quite a bit of time to load): >
|
|
||||||
:let skip_syntax_sel_menu = 1
|
|
||||||
<
|
|
||||||
*console-menus*
|
|
||||||
Although this documentation is in the GUI section, you can actually use menus
|
|
||||||
in console mode too. You will have to load |menu.vim| explicitly then, it is
|
|
||||||
not done by default. You can use the |:emenu| command and command-line
|
|
||||||
completion with 'wildmenu' to access the menu entries almost like a real menu
|
|
||||||
system. To do this, put these commands in your .vimrc file: >
|
|
||||||
:source $VIMRUNTIME/menu.vim
|
|
||||||
:set wildmenu
|
|
||||||
:set cpo-=<
|
|
||||||
:set wcm=<C-Z>
|
|
||||||
:map <F4> :emenu <C-Z>
|
|
||||||
Pressing <F4> will start the menu. You can now use the cursor keys to select
|
|
||||||
a menu entry. Hit <Enter> to execute it. Hit <Esc> if you want to cancel.
|
|
||||||
This does require the |+menu| feature enabled at compile time.
|
|
||||||
|
|
||||||
*tear-off-menus*
|
|
||||||
GTK+ and Motif support Tear-off menus. These are sort of sticky menus or
|
|
||||||
pop-up menus that are present all the time. If the resizing does not work
|
|
||||||
correctly, this may be caused by using something like "Vim*geometry" in the
|
|
||||||
defaults. Use "Vim.geometry" instead.
|
|
||||||
|
|
||||||
The Win32 GUI version emulates Motif's tear-off menus. Actually, a Motif user
|
|
||||||
will spot the differences easily, but hopefully they're just as useful. You
|
|
||||||
can also use the |:tearoff| command together with |hidden-menus| to create
|
|
||||||
floating menus that do not appear on the main menu bar.
|
|
||||||
|
|
||||||
|
|
||||||
5.2 Creating New Menus *creating-menus*
|
|
||||||
|
|
||||||
*:me* *:menu* *:noreme* *:noremenu*
|
|
||||||
*:am* *:amenu* *:an* *:anoremenu*
|
|
||||||
*:nme* *:nmenu* *:nnoreme* *:nnoremenu*
|
|
||||||
*:ome* *:omenu* *:onoreme* *:onoremenu*
|
|
||||||
*:vme* *:vmenu* *:vnoreme* *:vnoremenu*
|
|
||||||
*:ime* *:imenu* *:inoreme* *:inoremenu*
|
|
||||||
*:cme* *:cmenu* *:cnoreme* *:cnoremenu*
|
|
||||||
*E330* *E327* *E331* *E336* *E333*
|
|
||||||
*E328* *E329* *E337*
|
|
||||||
To create a new menu item, use the ":menu" commands. They are mostly like
|
|
||||||
the ":map" set of commands but the first argument is a menu item name, given
|
|
||||||
as a path of menus and submenus with a '.' between them. eg: >
|
|
||||||
|
|
||||||
:menu File.Save :w<CR>
|
|
||||||
:inoremenu File.Save <C-O>:w<CR>
|
|
||||||
:menu Edit.Big\ Changes.Delete\ All\ Spaces :%s/[ ^I]//g<CR>
|
|
||||||
|
|
||||||
This last one will create a new item in the menu bar called "Edit", holding
|
|
||||||
the mouse button down on this will pop up a menu containing the item
|
|
||||||
"Big Changes", which is a sub-menu containing the item "Delete All Spaces",
|
|
||||||
which when selected, performs the operation.
|
|
||||||
|
|
||||||
Special characters in a menu name:
|
|
||||||
|
|
||||||
& The next character is the shortcut key. Make sure each
|
|
||||||
shortcut key is only used once in a (sub)menu. If you want to
|
|
||||||
insert a literal "&" in the menu name use "&&".
|
|
||||||
<Tab> Separates the menu name from right-aligned text. This can be
|
|
||||||
used to show the equivalent typed command. The text "<Tab>"
|
|
||||||
can be used here for convenience. If you are using a real
|
|
||||||
Tab, don't forget to put a backslash before it!
|
|
||||||
Example: >
|
|
||||||
|
|
||||||
:amenu &File.&Open<Tab>:e :browse e<CR>
|
|
||||||
|
|
||||||
[typed literally]
|
|
||||||
With the shortcut "F" (while keeping the <Alt> key pressed), and then "O",
|
|
||||||
this menu can be used. The second part is shown as "Open :e". The ":e"
|
|
||||||
is right aligned, and the "O" is underlined, to indicate it is the shortcut.
|
|
||||||
|
|
||||||
The ":amenu" command can be used to define menu entries for all modes at once.
|
|
||||||
To make the command work correctly, a character is automatically inserted for
|
|
||||||
some modes:
|
|
||||||
mode inserted appended ~
|
|
||||||
Normal nothing nothing
|
|
||||||
Visual <C-C> <C-\><C-G>
|
|
||||||
Insert <C-O>
|
|
||||||
Cmdline <C-C> <C-\><C-G>
|
|
||||||
Op-pending <C-C> <C-\><C-G>
|
|
||||||
|
|
||||||
Appending CTRL-\ CTRL-G is for going back to insert mode when 'insertmode' is
|
|
||||||
set. |CTRL-\_CTRL-G|
|
|
||||||
|
|
||||||
Example: >
|
|
||||||
|
|
||||||
:amenu File.Next :next^M
|
|
||||||
|
|
||||||
is equal to: >
|
|
||||||
|
|
||||||
:nmenu File.Next :next^M
|
|
||||||
:vmenu File.Next ^C:next^M^\^G
|
|
||||||
:imenu File.Next ^O:next^M
|
|
||||||
:cmenu File.Next ^C:next^M^\^G
|
|
||||||
:omenu File.Next ^C:next^M^\^G
|
|
||||||
|
|
||||||
Careful: In Insert mode this only works for a SINGLE Normal mode command,
|
|
||||||
because of the CTRL-O. If you have two or more commands, you will need to use
|
|
||||||
the ":imenu" command. For inserting text in any mode, you can use the
|
|
||||||
expression register: >
|
|
||||||
|
|
||||||
:amenu Insert.foobar "='foobar'<CR>P
|
|
||||||
|
|
||||||
Note that the '<' and 'k' flags in 'cpoptions' also apply here (when
|
|
||||||
included they make the <> form and raw key codes not being recognized).
|
|
||||||
|
|
||||||
Note that <Esc> in Cmdline mode executes the command, like in a mapping. This
|
|
||||||
is Vi compatible. Use CTRL-C to quit Cmdline mode.
|
|
||||||
|
|
||||||
*:menu-<silent>* *:menu-silent*
|
|
||||||
To define a menu which will not be echoed on the command line, add
|
|
||||||
"<silent>" as the first argument. Example: >
|
|
||||||
:menu <silent> Settings.Ignore\ case :set ic<CR>
|
|
||||||
The ":set ic" will not be echoed when using this menu. Messages from the
|
|
||||||
executed command are still given though. To shut them up too, add a ":silent"
|
|
||||||
in the executed command: >
|
|
||||||
:menu <silent> Search.Header :exe ":silent normal /Header\r"<CR>
|
|
||||||
<
|
|
||||||
*:menu-<script>* *:menu-script*
|
|
||||||
The "to" part of the menu will be inspected for mappings. If you don't want
|
|
||||||
this, use the ":noremenu" command (or the similar one for a specific mode).
|
|
||||||
If you do want to use script-local mappings, add "<script>" as the very first
|
|
||||||
argument to the ":menu" command or after "<silent>".
|
|
||||||
|
|
||||||
*menu-priority*
|
|
||||||
You can give a priority to a menu. Menus with a higher priority go more to
|
|
||||||
the right. The priority is given as a number before the ":menu" command.
|
|
||||||
Example: >
|
|
||||||
:80menu Buffer.next :bn<CR>
|
|
||||||
|
|
||||||
The default menus have these priorities:
|
|
||||||
File 10
|
|
||||||
Edit 20
|
|
||||||
Tools 40
|
|
||||||
Syntax 50
|
|
||||||
Buffers 60
|
|
||||||
Window 70
|
|
||||||
Help 9999
|
|
||||||
|
|
||||||
When no or zero priority is given, 500 is used.
|
|
||||||
The priority for the PopUp menu is not used.
|
|
||||||
|
|
||||||
The Help menu will be placed on the far right side of the menu bar on systems
|
|
||||||
which support this (Motif and GTK+). For GTK+ 2, this is not done anymore
|
|
||||||
because right-aligning the Help menu is now discouraged UI design.
|
|
||||||
|
|
||||||
You can use a priority higher than 9999, to make it go after the Help menu,
|
|
||||||
but that is non-standard and is discouraged. The highest possible priority is
|
|
||||||
about 32000. The lowest is 1.
|
|
||||||
|
|
||||||
*sub-menu-priority*
|
|
||||||
The same mechanism can be used to position a sub-menu. The priority is then
|
|
||||||
given as a dot-separated list of priorities, before the menu name: >
|
|
||||||
:menu 80.500 Buffer.next :bn<CR>
|
|
||||||
Giving the sub-menu priority is only needed when the item is not to be put
|
|
||||||
in a normal position. For example, to put a sub-menu before the other items: >
|
|
||||||
:menu 80.100 Buffer.first :brew<CR>
|
|
||||||
Or to put a sub-menu after the other items, and further items with default
|
|
||||||
priority will be put before it: >
|
|
||||||
:menu 80.900 Buffer.last :blast<CR>
|
|
||||||
When a number is missing, the default value 500 will be used: >
|
|
||||||
:menu .900 myMenu.test :echo "text"<CR>
|
|
||||||
The menu priority is only used when creating a new menu. When it already
|
|
||||||
existed, e.g., in another mode, the priority will not change. Thus, the
|
|
||||||
priority only needs to be given the first time a menu is used.
|
|
||||||
An exception is the PopUp menu. There is a separate menu for each mode
|
|
||||||
(Normal, Op-pending, Visual, Insert, Cmdline). The order in each of these
|
|
||||||
menus can be different. This is different from menu-bar menus, which have
|
|
||||||
the same order for all modes.
|
|
||||||
NOTE: sub-menu priorities currently don't work for all versions of the GUI.
|
|
||||||
|
|
||||||
*menu-separator* *E332*
|
|
||||||
Menu items can be separated by a special item that inserts some space between
|
|
||||||
items. Depending on the system this is displayed as a line or a dotted line.
|
|
||||||
These items must start with a '-' and end in a '-'. The part in between is
|
|
||||||
used to give it a unique name. Priorities can be used as with normal items.
|
|
||||||
Example: >
|
|
||||||
:menu Example.item1 :do something
|
|
||||||
:menu Example.-Sep- :
|
|
||||||
:menu Example.item2 :do something different
|
|
||||||
Note that the separator also requires a rhs. It doesn't matter what it is,
|
|
||||||
because the item will never be selected. Use a single colon to keep it
|
|
||||||
simple.
|
|
||||||
|
|
||||||
*gui-toolbar*
|
|
||||||
The toolbar is currently available in the Win32, Athena, Motif, GTK+ (X11) and
|
|
||||||
Photon GUI. It should turn up in other GUIs in due course. The default
|
|
||||||
toolbar is setup in menu.vim.
|
|
||||||
The display of the toolbar is controlled by the 'guioptions' letter 'T'. You
|
|
||||||
can thus have menu & toolbar together, or either on its own, or neither.
|
|
||||||
The appearance is controlled by the 'toolbar' option. You can chose between
|
|
||||||
an image, text or both.
|
|
||||||
|
|
||||||
*toolbar-icon*
|
|
||||||
The toolbar is defined as a special menu called ToolBar, which only has one
|
|
||||||
level. Vim interprets the items in this menu as follows:
|
|
||||||
1) If an "icon=" argument was specified, the file with this name is used.
|
|
||||||
The file can either be specified with the full path or with the base name.
|
|
||||||
In the last case it is searched for in the "bitmaps" directory in
|
|
||||||
'runtimepath', like in point 3). Examples: >
|
|
||||||
:amenu icon=/usr/local/pixmaps/foo_icon.xpm ToolBar.Foo :echo "Foo"<CR>
|
|
||||||
:amenu icon=FooIcon ToolBar.Foo :echo "Foo"<CR>
|
|
||||||
< Note that in the first case the extension is included, while in the second
|
|
||||||
case it is omitted.
|
|
||||||
If the file cannot be opened the next points are tried.
|
|
||||||
A space in the file name must be escaped with a backslash.
|
|
||||||
A menu priority must come _after_ the icon argument: >
|
|
||||||
:amenu icon=foo 1.42 ToolBar.Foo :echo "42!"<CR>
|
|
||||||
2) An item called 'BuiltIn##', where ## is a number, is taken as number ## of
|
|
||||||
the built-in bitmaps available in Vim. Currently there are 31 numbered
|
|
||||||
from 0 to 30 which cover most common editing operations |builtin-tools|. >
|
|
||||||
:amenu ToolBar.BuiltIn22 :call SearchNext("back")<CR>
|
|
||||||
3) An item with another name is first searched for in the directory
|
|
||||||
"bitmaps" in 'runtimepath'. If found, the bitmap file is used as the
|
|
||||||
toolbar button image. Note that the exact filename is OS-specific: For
|
|
||||||
example, under Win32 the command >
|
|
||||||
:amenu ToolBar.Hello :echo "hello"<CR>
|
|
||||||
< would find the file 'hello.bmp'. Under GTK+/X11 it is 'Hello.xpm'. With
|
|
||||||
GTK+ 2 the files 'Hello.png', 'Hello.xpm' and 'Hello.bmp' are checked for
|
|
||||||
existence, and the first one found would be used.
|
|
||||||
For MS-Windows and GTK+ 2 the bitmap is scaled to fit the button. For
|
|
||||||
MS-Windows a size of 18 by 18 pixels works best.
|
|
||||||
For MS-Windows the bitmap should have 16 colors with the standard palette.
|
|
||||||
The light grey pixels will be changed to the Window frame color and the
|
|
||||||
dark grey pixels to the window shadow color. More colors might also work,
|
|
||||||
depending on your system.
|
|
||||||
4) If the bitmap is still not found, Vim checks for a match against its list
|
|
||||||
of built-in names. Each built-in button image has a name.
|
|
||||||
So the command >
|
|
||||||
:amenu ToolBar.Open :e
|
|
||||||
< will show the built-in "open a file" button image if no open.bmp exists.
|
|
||||||
All the built-in names can be seen used in menu.vim.
|
|
||||||
5) If all else fails, a blank, but functioning, button is displayed.
|
|
||||||
|
|
||||||
*builtin-tools*
|
|
||||||
nr Name Normal action ~
|
|
||||||
00 New open new window
|
|
||||||
01 Open browse for file to open in current window
|
|
||||||
02 Save write buffer to file
|
|
||||||
03 Undo undo last change
|
|
||||||
04 Redo redo last undone change
|
|
||||||
05 Cut delete selected text to clipboard
|
|
||||||
06 Copy copy selected text to clipboard
|
|
||||||
07 Paste paste text from clipboard
|
|
||||||
08 Print print current buffer
|
|
||||||
09 Help open a buffer on Vim's builtin help
|
|
||||||
10 Find start a search command
|
|
||||||
11 SaveAll write all modified buffers to file
|
|
||||||
12 SaveSesn write session file for current situation
|
|
||||||
13 NewSesn write new session file
|
|
||||||
14 LoadSesn load session file
|
|
||||||
15 RunScript browse for file to run as a Vim script
|
|
||||||
16 Replace prompt for substitute command
|
|
||||||
17 WinClose close current window
|
|
||||||
18 WinMax make current window use many lines
|
|
||||||
19 WinMin make current window use few lines
|
|
||||||
20 WinSplit split current window
|
|
||||||
21 Shell start a shell
|
|
||||||
22 FindPrev search again, backward
|
|
||||||
23 FindNext search again, forward
|
|
||||||
24 FindHelp prompt for word to search help for
|
|
||||||
25 Make run make and jump to first error
|
|
||||||
26 TagJump jump to tag under the cursor
|
|
||||||
27 RunCtags build tags for files in current directory
|
|
||||||
28 WinVSplit split current window vertically
|
|
||||||
29 WinMaxWidth make current window use many columns
|
|
||||||
30 WinMinWidth make current window use few columns
|
|
||||||
|
|
||||||
*hidden-menus* *win32-hidden-menus*
|
|
||||||
In the Win32 and GTK+ GUI, starting a menu name with ']' excludes that menu
|
|
||||||
from the main menu bar. You must then use the |:popup| or |:tearoff| command
|
|
||||||
to display it.
|
|
||||||
|
|
||||||
*popup-menu*
|
|
||||||
In the Win32, GTK+, Motif, Athena and Photon GUI, you can define the special
|
|
||||||
menu "PopUp". This is the menu that is displayed when the right mouse button
|
|
||||||
is pressed, if 'mousemodel' is set to popup or popup_setpos.
|
|
||||||
|
|
||||||
|
|
||||||
5.3 Showing What Menus Are Mapped To *showing-menus*
|
|
||||||
|
|
||||||
To see what an existing menu is mapped to, use just one argument after the
|
|
||||||
menu commands (just like you would with the ":map" commands). If the menu
|
|
||||||
specified is a submenu, then all menus under that hierarchy will be shown.
|
|
||||||
If no argument is given after :menu at all, then ALL menu items are shown
|
|
||||||
for the appropriate mode (eg, Command-line mode for :cmenu).
|
|
||||||
|
|
||||||
Special characters in the list, just before the rhs:
|
|
||||||
* The menu was defined with "nore" to disallow remapping.
|
|
||||||
& The menu was defined with "<script>" to allow remapping script-local
|
|
||||||
mappings only.
|
|
||||||
- The menu was disabled.
|
|
||||||
|
|
||||||
Note that hitting <Tab> while entering a menu name after a menu command may
|
|
||||||
be used to complete the name of the menu item.
|
|
||||||
|
|
||||||
|
|
||||||
5.4 Executing Menus *execute-menus*
|
|
||||||
|
|
||||||
*:em* *:emenu* *E334* *E335*
|
|
||||||
:[range]em[enu] {menu} Execute {menu} from the command line.
|
|
||||||
The default is to execute the Normal mode
|
|
||||||
menu. If a range is specified, it executes
|
|
||||||
the Visual mode menu.
|
|
||||||
If used from <c-o>, it executes the
|
|
||||||
insert-mode menu Eg: >
|
|
||||||
:emenu File.Exit
|
|
||||||
|
|
||||||
If the console-mode vim has been compiled with WANT_MENU defined, you can
|
|
||||||
use :emenu to access useful menu items you may have got used to from GUI
|
|
||||||
mode. See 'wildmenu' for an option that works well with this. See
|
|
||||||
|console-menus| for an example.
|
|
||||||
|
|
||||||
When using a range, if the lines match with '<,'>, then the menu is executed
|
|
||||||
using the last visual selection.
|
|
||||||
|
|
||||||
|
|
||||||
5.5 Deleting Menus *delete-menus*
|
|
||||||
|
|
||||||
*:unme* *:unmenu*
|
|
||||||
*:aun* *:aunmenu*
|
|
||||||
*:nunme* *:nunmenu*
|
|
||||||
*:ounme* *:ounmenu*
|
|
||||||
*:vunme* *:vunmenu*
|
|
||||||
*:iunme* *:iunmenu*
|
|
||||||
*:cunme* *:cunmenu*
|
|
||||||
To delete a menu item or a whole submenu, use the unmenu commands, which are
|
|
||||||
analogous to the unmap commands. Eg: >
|
|
||||||
:unmenu! Edit.Paste
|
|
||||||
|
|
||||||
This will remove the Paste item from the Edit menu for Insert and
|
|
||||||
Command-line modes.
|
|
||||||
|
|
||||||
Note that hitting <Tab> while entering a menu name after an umenu command
|
|
||||||
may be used to complete the name of the menu item for the appropriate mode.
|
|
||||||
|
|
||||||
To remove all menus use: *:unmenu-all* >
|
|
||||||
:unmenu * " remove all menus in Normal and visual mode
|
|
||||||
:unmenu! * " remove all menus in Insert and Command-line mode
|
|
||||||
:aunmenu * " remove all menus in all modes
|
|
||||||
|
|
||||||
If you want to get rid of the menu bar: >
|
|
||||||
:set guioptions-=m
|
|
||||||
|
|
||||||
|
|
||||||
5.6 Disabling Menus *disable-menus*
|
|
||||||
|
|
||||||
*:menu-disable* *:menu-enable*
|
|
||||||
If you do not want to remove a menu, but disable it for a moment, this can be
|
|
||||||
done by adding the "enable" or "disable" keyword to a ":menu" command.
|
|
||||||
Examples: >
|
|
||||||
:menu disable &File.&Open\.\.\.
|
|
||||||
:amenu enable *
|
|
||||||
:amenu disable &Tools.*
|
|
||||||
|
|
||||||
The command applies to the modes as used with all menu commands. Note that
|
|
||||||
characters like "&" need to be included for translated names to be found.
|
|
||||||
When the argument is "*", all menus are affected. Otherwise the given menu
|
|
||||||
name and all existing submenus below it are affected.
|
|
||||||
|
|
||||||
|
|
||||||
5.7 Examples for Menus *menu-examples*
|
|
||||||
|
|
||||||
Here is an example on how to add menu items with menu's! You can add a menu
|
|
||||||
item for the keyword under the cursor. The register "z" is used. >
|
|
||||||
|
|
||||||
:nmenu Words.Add\ Var wb"zye:menu! Words.<C-R>z <C-R>z<CR>
|
|
||||||
:nmenu Words.Remove\ Var wb"zye:unmenu! Words.<C-R>z<CR>
|
|
||||||
:vmenu Words.Add\ Var "zy:menu! Words.<C-R>z <C-R>z <CR>
|
|
||||||
:vmenu Words.Remove\ Var "zy:unmenu! Words.<C-R>z<CR>
|
|
||||||
:imenu Words.Add\ Var <Esc>wb"zye:menu! Words.<C-R>z <C-R>z<CR>a
|
|
||||||
:imenu Words.Remove\ Var <Esc>wb"zye:unmenu! Words.<C-R>z<CR>a
|
|
||||||
|
|
||||||
(the rhs is in <> notation, you can copy/paste this text to try out the
|
|
||||||
mappings, or put these lines in your gvimrc; "<C-R>" is CTRL-R, "<CR>" is
|
|
||||||
the <CR> key. |<>|)
|
|
||||||
|
|
||||||
|
|
||||||
5.8 Tooltips & Menu tips
|
|
||||||
|
|
||||||
See section |42.4| in the user manual.
|
|
||||||
|
|
||||||
*:tmenu* *:tm*
|
|
||||||
:tm[enu] {menupath} {rhs} Define a tip for a menu or tool. {only in
|
|
||||||
X11 and Win32 GUI}
|
|
||||||
|
|
||||||
:tm[enu] [menupath] List menu tips. {only in X11 and Win32 GUI}
|
|
||||||
|
|
||||||
*:tunmenu* *:tu*
|
|
||||||
:tu[nmenu] {menupath} Remove a tip for a menu or tool.
|
|
||||||
{only in X11 and Win32 GUI}
|
|
||||||
|
|
||||||
When a tip is defined for a menu item, it appears in the command-line area
|
|
||||||
when the mouse is over that item, much like a standard Windows menu hint in
|
|
||||||
the status bar. (Except when Vim is in Command-line mode, when of course
|
|
||||||
nothing is displayed.)
|
|
||||||
When a tip is defined for a ToolBar item, it appears as a tooltip when the
|
|
||||||
mouse pauses over that button, in the usual fashion. Use the |hl-Tooltip|
|
|
||||||
highlight group to change its colors.
|
|
||||||
|
|
||||||
A "tip" can be defined for each menu item. For example, when defining a menu
|
|
||||||
item like this: >
|
|
||||||
:amenu MyMenu.Hello :echo "Hello"<CR>
|
|
||||||
The tip is defined like this: >
|
|
||||||
:tmenu MyMenu.Hello Displays a greeting.
|
|
||||||
And delete it with: >
|
|
||||||
:tunmenu MyMenu.Hello
|
|
||||||
|
|
||||||
Tooltips are currently only supported for the X11 and Win32 GUI. However, they
|
|
||||||
should appear for the other gui platforms in the not too distant future.
|
|
||||||
|
|
||||||
The ":tmenu" command works just like other menu commands, it uses the same
|
|
||||||
arguments. ":tunmenu" deletes an existing menu tip, in the same way as the
|
|
||||||
other unmenu commands.
|
|
||||||
|
|
||||||
If a menu item becomes invalid (i.e. its actions in all modes are deleted) Vim
|
|
||||||
deletes the menu tip (and the item) for you. This means that :aunmenu deletes
|
|
||||||
a menu item - you don't need to do a :tunmenu as well.
|
|
||||||
|
|
||||||
|
|
||||||
5.9 Popup Menus
|
|
||||||
|
|
||||||
In the Win32 and GTK+ GUI, you can cause a menu to popup at the cursor.
|
|
||||||
This behaves similarly to the PopUp menus except that any menu tree can
|
|
||||||
be popped up.
|
|
||||||
|
|
||||||
This command is for backwards compatibility, using it is discouraged, because
|
|
||||||
it behaves in a strange way.
|
|
||||||
|
|
||||||
*:popup* *:popu*
|
|
||||||
:popu[p] {name} Popup the menu {name}. The menu named must
|
|
||||||
have at least one subentry, but need not
|
|
||||||
appear on the menu-bar (see |hidden-menus|).
|
|
||||||
{only available for Win32 and GTK GUI}
|
|
||||||
|
|
||||||
Example: >
|
|
||||||
:popup File
|
|
||||||
will make the "File" menu (if there is one) appear at the text cursor. >
|
|
||||||
|
|
||||||
:amenu ]Toolbar.Make :make<CR>
|
|
||||||
:popup ]Toolbar
|
|
||||||
This creates a popup menu that doesn't exist on the main menu-bar.
|
|
||||||
|
|
||||||
Note that a menu that starts with ']' will not be displayed.
|
|
||||||
|
|
||||||
==============================================================================
|
|
||||||
6. Extras *gui-extras*
|
|
||||||
|
|
||||||
This section describes other features which are related to the GUI.
|
|
||||||
|
|
||||||
- With the GUI, there is no wait for one second after hitting escape, because
|
|
||||||
the key codes don't start with <Esc>.
|
|
||||||
|
|
||||||
- Typing ^V followed by a special key in the GUI will insert "<Key>", since
|
|
||||||
the internal string used is meaningless. Modifiers may also be held down to
|
|
||||||
get "<Modifiers-Key>".
|
|
||||||
|
|
||||||
- In the GUI, the modifiers SHIFT, CTRL, and ALT (or META) may be used within
|
|
||||||
mappings of special keys and mouse events. eg: :map <M-LeftDrag> <LeftDrag>
|
|
||||||
|
|
||||||
- In the GUI, several normal keys may have modifiers in mappings etc, these
|
|
||||||
are <Space>, <Tab>, <NL>, <CR>, <Esc>.
|
|
||||||
|
|
||||||
- To check in a Vim script if the GUI is being used, you can use something
|
|
||||||
like this: >
|
|
||||||
|
|
||||||
if has("gui_running")
|
|
||||||
echo "yes, we have a GUI"
|
|
||||||
else
|
|
||||||
echo "Boring old console"
|
|
||||||
endif
|
|
||||||
|
|
||||||
==============================================================================
|
|
||||||
7. Shell Commands *gui-shell*
|
|
||||||
|
|
||||||
For the X11 GUI the external commands are executed inside the gvim window.
|
|
||||||
See |gui-pty|.
|
|
||||||
|
|
||||||
WARNING: Executing an external command from the X11 GUI will not always
|
|
||||||
work. "normal" commands like "ls", "grep" and "make" mostly work fine.
|
|
||||||
Commands that require an intelligent terminal like "less" and "ispell" won't
|
|
||||||
work. Some may even hang and need to be killed from another terminal. So be
|
|
||||||
careful!
|
|
||||||
|
|
||||||
For the Win32 GUI the external commands are executed in a separate window.
|
|
||||||
See |gui-shell-win32|.
|
|
||||||
|
|
||||||
vim:tw=78:sw=4:ts=8:ft=help:norl:
|
|
||||||
@@ -1,186 +0,0 @@
|
|||||||
*gui_w16.txt* For Vim version 6.3. Last change: 2001 Sep 03
|
|
||||||
|
|
||||||
|
|
||||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
|
||||||
|
|
||||||
|
|
||||||
Vim's Graphical User Interface *gui-w16* *win16-gui*
|
|
||||||
|
|
||||||
1. Starting the GUI |win16-start|
|
|
||||||
2. Vim as default editor |win16-default-editor|
|
|
||||||
3. Using the clipboard |win16-clipboard|
|
|
||||||
4. Shell Commands |win16-shell|
|
|
||||||
5. Special colors |win16-colors|
|
|
||||||
6. Windows dialogs & browsers |win16-dialogs|
|
|
||||||
7. Various |win16-various|
|
|
||||||
|
|
||||||
Other relevant documentation:
|
|
||||||
|gui.txt| For generic items of the GUI.
|
|
||||||
|os_msdos.txt| For items common to DOS and Windows.
|
|
||||||
|gui_w32.txt| Some items here are also applicable to the Win16 version.
|
|
||||||
|
|
||||||
{Vi does not have a Windows GUI}
|
|
||||||
|
|
||||||
The Win16 version of Vim will run on Windows 3.1 or later. It has not been
|
|
||||||
tested on 3.0, it probably won't work without being recompiled and
|
|
||||||
modified. (but you really should upgrade to 3.11 anyway. :)
|
|
||||||
|
|
||||||
In most respects it behaves identically to the Win32 GUI version, including
|
|
||||||
having a flat-style toolbar(!). The chief differences:
|
|
||||||
|
|
||||||
1) Bold/Italic text is not available, to speed up repaint/reduce resource
|
|
||||||
usage. (You can re-instate this by undefining MSWIN16_FASTTEXT.)
|
|
||||||
2) No tearoff menu emulation.
|
|
||||||
3) No OLE interface.
|
|
||||||
4) No long filename support (of course)
|
|
||||||
5) No tooltips on toolbar buttons - instead they produce command-line tips
|
|
||||||
like menu items do.
|
|
||||||
6) Line length limited to 32767 characters (like 16-bit DOS version)
|
|
||||||
|
|
||||||
|
|
||||||
==============================================================================
|
|
||||||
1. Starting the GUI *win16-start*
|
|
||||||
|
|
||||||
The Win16 GUI version of Vim will always start the GUI, no matter how you
|
|
||||||
start it or what it's called. There is no 'console' version as such, but you
|
|
||||||
can use one of the DOS versions in a DOS box.
|
|
||||||
|
|
||||||
The Win16 GUI has an extra menu item: "Window/Select Font". It brings up the
|
|
||||||
standard Windows font selector. Note that bold and italic fonts are not
|
|
||||||
supported in an attempt to maximize GDI drawing speed.
|
|
||||||
|
|
||||||
Setting the menu height doesn't work for the Win16 GUI.
|
|
||||||
|
|
||||||
*win16-maximized*
|
|
||||||
If you want Vim to start with a maximized window, add this command to your
|
|
||||||
vimrc or gvimrc file: >
|
|
||||||
au GUIEnter * simalt ~x
|
|
||||||
<
|
|
||||||
|
|
||||||
There is a specific version of gvim.exe that runs under the Win32s subsystem
|
|
||||||
of Windows 3.1 or 3.11. See |win32s|.
|
|
||||||
|
|
||||||
==============================================================================
|
|
||||||
2. Vim as default editor *win16-default-editor*
|
|
||||||
|
|
||||||
To set Vim as the default editor for a file type you can use File Manager's
|
|
||||||
"Associate" feature.
|
|
||||||
|
|
||||||
When you open a file in Vim by double clicking it, Vim changes to that
|
|
||||||
file's directory.
|
|
||||||
|
|
||||||
See also |notepad|.
|
|
||||||
|
|
||||||
==============================================================================
|
|
||||||
3. Using the clipboard *win16-clipboard*
|
|
||||||
|
|
||||||
Windows has a clipboard, where you can copy text to, and paste text from. Vim
|
|
||||||
supports this in several ways.
|
|
||||||
The clipboard works in the same way as the Win32 version: see |gui-clipboard|.
|
|
||||||
|
|
||||||
==============================================================================
|
|
||||||
4. Shell Commands *win16-shell*
|
|
||||||
|
|
||||||
Vim spawns a DOS window for external commands, to make it possible to run any
|
|
||||||
DOS command. The window uses the _default.pif settings.
|
|
||||||
|
|
||||||
*win16-!start*
|
|
||||||
Normally, Vim waits for a command to complete before continuing (this makes
|
|
||||||
sense for most shell commands which produce output for Vim to use). If you
|
|
||||||
want Vim to start a program and return immediately, you can use the following
|
|
||||||
syntax:
|
|
||||||
:!start {command}
|
|
||||||
This may only work for a Windows program though.
|
|
||||||
Don't forget that you must tell Windows 3.1x to keep executing a DOS command
|
|
||||||
in the background while you switch back to Vim.
|
|
||||||
|
|
||||||
==============================================================================
|
|
||||||
5. Special colors *win16-colors*
|
|
||||||
|
|
||||||
On Win16, the normal DOS colors can be used. See |dos-colors|.
|
|
||||||
|
|
||||||
Additionally the system configured colors can also be used. These are known
|
|
||||||
by the names Sys_XXX, where XXX is the appropriate system color name, from the
|
|
||||||
following list (see the Win32 documentation for full descriptions). Case is
|
|
||||||
ignored.
|
|
||||||
|
|
||||||
Sys_BTNFace Sys_BTNShadow Sys_ActiveBorder
|
|
||||||
Sys_ActiveCaption Sys_AppWorkspace Sys_Background
|
|
||||||
Sys_BTNText Sys_CaptionText Sys_GrayText
|
|
||||||
Sys_Highlight Sys_HighlightText Sys_InactiveBorder
|
|
||||||
Sys_InactiveCaption Sys_InactiveCaptionText Sys_Menu
|
|
||||||
Sys_MenuText Sys_ScrollBar Sys_Window
|
|
||||||
Sys_WindowFrame Sys_WindowText
|
|
||||||
|
|
||||||
Probably the most useful values are
|
|
||||||
Sys_Window Normal window background
|
|
||||||
Sys_WindowText Normal window text
|
|
||||||
Sys_Highlight Highlighted background
|
|
||||||
Sys_HighlightText Highlighted text
|
|
||||||
|
|
||||||
These extra colors are also available:
|
|
||||||
Gray, Grey, LightYellow, SeaGreen, Orange, Purple, SlateBlue, Violet,
|
|
||||||
|
|
||||||
|
|
||||||
See also |rgb.txt|.
|
|
||||||
|
|
||||||
==============================================================================
|
|
||||||
*win16-dialogs*
|
|
||||||
6. Windows dialogs & browsers
|
|
||||||
|
|
||||||
The Win16 GUI can use familiar Windows components for some operations, as well
|
|
||||||
as the traditional interface shared with the console version.
|
|
||||||
|
|
||||||
|
|
||||||
6.1 Dialogs
|
|
||||||
|
|
||||||
The dialogs displayed by the "confirm" family (i.e. the 'confirm' option,
|
|
||||||
|:confirm| command and |confirm()| function are GUI-based rather than the
|
|
||||||
console-based ones used by other versions. There is no option to change this.
|
|
||||||
|
|
||||||
|
|
||||||
6.2 File Browsers
|
|
||||||
|
|
||||||
When prepending ":browse" before file editing commands, a file requester is
|
|
||||||
used to allow you to select an existing file. See |:browse|.
|
|
||||||
|
|
||||||
|
|
||||||
==============================================================================
|
|
||||||
7. Various *win16-various*
|
|
||||||
|
|
||||||
*win16-printing*
|
|
||||||
The "File/Print" menu uses Notepad to print the current buffer. This is a bit
|
|
||||||
clumsy, but it's portable. If you want something else, you can define your
|
|
||||||
own print command. For example, you could look for the 16-bit version of
|
|
||||||
PrintFile. See $VIMRUNTIME/menu.vim for how it works by default.
|
|
||||||
|
|
||||||
Using this should also work: >
|
|
||||||
:w >>prn
|
|
||||||
|
|
||||||
Vim supports a number of standard MS Windows features. Some of these are
|
|
||||||
detailed elsewhere: see |'mouse'|, |win32-hidden-menus|.
|
|
||||||
Also see |:simalt|
|
|
||||||
|
|
||||||
*win16-drag-n-drop*
|
|
||||||
You can drag and drop one or more files into the vim window, where they will
|
|
||||||
be opened as normal. If you hold down Shift while doing this, Vim changes to
|
|
||||||
the (first) dropped file's directory. If you hold Ctrl, Vim will always split
|
|
||||||
a new window for the file. Otherwise it's only done if the current buffer has
|
|
||||||
been changed.
|
|
||||||
You can also drop a directory's icon, but rather than open all files in the
|
|
||||||
directory (which wouldn't usually be what you want) Vim instead changes to
|
|
||||||
that directory and begins a new file.
|
|
||||||
If Vim happens to be editing a command line, the names of the dropped files
|
|
||||||
and directories will be inserted at the cursor. This allows you to use these
|
|
||||||
names with any Ex command.
|
|
||||||
|
|
||||||
*win16-truetype*
|
|
||||||
It is recommended that you use a raster font and not a TrueType
|
|
||||||
fixed-pitch font. e.g. Use Courier, not Courier New. This is not just
|
|
||||||
to use less resources but because there are subtle bugs in the
|
|
||||||
handling of fixed-pitch TrueType in Win3.1x. In particular, when you move
|
|
||||||
a block cursor over a pipe character '|', the cursor is drawn in the wrong
|
|
||||||
size and bits get left behind. This is a bug in the Win3.1x GDI, it doesn't
|
|
||||||
happen if you run the exe under 95/NT.
|
|
||||||
|
|
||||||
vim:tw=78:sw=4:ts=8:ft=help:norl:
|
|
||||||
@@ -1,472 +0,0 @@
|
|||||||
*gui_w32.txt* For Vim version 6.3. Last change: 2004 May 03
|
|
||||||
|
|
||||||
|
|
||||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
|
||||||
|
|
||||||
|
|
||||||
Vim's Win32 Graphical User Interface *gui-w32* *win32-gui*
|
|
||||||
|
|
||||||
1. Starting the GUI |gui-w32-start|
|
|
||||||
2. Vim as default editor |vim-default-editor|
|
|
||||||
3. Using the clipboard |gui-clipboard|
|
|
||||||
4. Shell Commands |gui-shell-win32|
|
|
||||||
5. Special colors |win32-colors|
|
|
||||||
6. Windows dialogs & browsers |gui-w32-dialogs|
|
|
||||||
7. Command line arguments |gui-w32-cmdargs|
|
|
||||||
8. Various |gui-w32-various|
|
|
||||||
|
|
||||||
Other relevant documentation:
|
|
||||||
|gui.txt| For generic items of the GUI.
|
|
||||||
|os_win32.txt| For Win32 specific items.
|
|
||||||
|
|
||||||
{Vi does not have a Windows GUI}
|
|
||||||
|
|
||||||
==============================================================================
|
|
||||||
1. Starting the GUI *gui-w32-start*
|
|
||||||
|
|
||||||
The Win32 GUI version of Vim will always start the GUI, no matter how you
|
|
||||||
start it or what it's called.
|
|
||||||
|
|
||||||
The GUI will always run in the Windows subsystem. Mostly shells automatically
|
|
||||||
return with a command prompt after starting gvim. If not, you should use the
|
|
||||||
"start" command: >
|
|
||||||
start gvim [options] file ..
|
|
||||||
|
|
||||||
Note: All fonts (bold, italic) must be of the same size!!! If you don't do
|
|
||||||
this, text will disappear or mess up the display. Vim does not check the font
|
|
||||||
sizes. It's the size in screen pixels that must be the same. Note that some
|
|
||||||
fonts that have the same point size don't have the same pixel size!
|
|
||||||
Additionally, the positioning of the fonts must be the same (ascent and
|
|
||||||
descent).
|
|
||||||
|
|
||||||
The Win32 GUI has an extra menu item: "Edit/Select Font". It brings up the
|
|
||||||
standard Windows font selector.
|
|
||||||
|
|
||||||
Setting the menu height doesn't work for the Win32 GUI.
|
|
||||||
|
|
||||||
*gui-win32-maximized*
|
|
||||||
If you want Vim to start with a maximized window, add this command to your
|
|
||||||
vimrc or gvimrc file: >
|
|
||||||
au GUIEnter * simalt ~x
|
|
||||||
<
|
|
||||||
*gui-w32s*
|
|
||||||
There is a specific version of gvim.exe that runs under the Win32s subsystem
|
|
||||||
of Windows 3.1 or 3.11. See |win32s|.
|
|
||||||
|
|
||||||
==============================================================================
|
|
||||||
2. Vim as default editor *vim-default-editor*
|
|
||||||
|
|
||||||
To set Vim as the default editor for a file type:
|
|
||||||
1. Start a Windows Explorer
|
|
||||||
2. Chose View/Options -> File Types
|
|
||||||
3. Select the path to gvim for every file type that you want to use it for.
|
|
||||||
(you can also use three spaces in the file type field, for files without an
|
|
||||||
extension).
|
|
||||||
In the "open" action, use: >
|
|
||||||
gvim "%1"
|
|
||||||
< The quotes are required for using file names with embedded spaces.
|
|
||||||
You can also use this: >
|
|
||||||
gvim "%L"
|
|
||||||
< This should avoid short (8.3 character) file names in some situations. But
|
|
||||||
I'm not sure if this works everywhere.
|
|
||||||
|
|
||||||
When you open a file in Vim by double clicking it, Vim changes to that
|
|
||||||
file's directory.
|
|
||||||
|
|
||||||
If you want Vim to start full-screen, use this for the Open action: >
|
|
||||||
gvim -c "simalt ~x" "%1"
|
|
||||||
|
|
||||||
Another method, which also works when you put Vim in another directory (e.g.,
|
|
||||||
when you have got a new version):
|
|
||||||
1. select a file you want to use Vim with
|
|
||||||
2. <Shift-F10>
|
|
||||||
3. select "Open With..." menu entry
|
|
||||||
4. click "Other..."
|
|
||||||
5. browse to the (new) location of Vim and click "Open"
|
|
||||||
6. make "Always Use this program..." checked
|
|
||||||
7. <OK>
|
|
||||||
|
|
||||||
*send-to-menu* *sendto*
|
|
||||||
You can also install Vim in the "Send To" menu:
|
|
||||||
1. Start a Windows Explorer
|
|
||||||
2. Navigate to your sendto directory:
|
|
||||||
Windows 95: %windir%\sendto (e.g. "c:\windows\sendto")
|
|
||||||
Windows NT: %windir%\profiles\%user%\sendto (e.g.
|
|
||||||
"c:\winnt\profiles\mattha\sendto").
|
|
||||||
3. Right-click in the file pane and select New->Shortcut
|
|
||||||
4. Follow the shortcut wizard, using the full path to VIM/GVIM.
|
|
||||||
|
|
||||||
When you 'send a file to Vim', Vim changes to that file's directory. Note,
|
|
||||||
however, that any long directory names will appear in their short (MS-DOS)
|
|
||||||
form. This is a limitation of the Windows "Send To" mechanism.
|
|
||||||
|
|
||||||
*notepad*
|
|
||||||
You could replace notepad.exe with gvim.exe, but that has a few side effects.
|
|
||||||
Some programs rely on notepad arguments, which are not recognized by Vim. For
|
|
||||||
example "notepad -p" is used by some applications to print a file. It's
|
|
||||||
better to leave notepad where it is and use another way to start Vim.
|
|
||||||
|
|
||||||
*win32-popup-menu*
|
|
||||||
A more drastic approach is to install an "Edit with Vim" entry in the popup
|
|
||||||
menu for the right mouse button. With this you can edit any file with Vim.
|
|
||||||
|
|
||||||
This can co-exist with the file associations mentioned above. The difference
|
|
||||||
is that the file associations will make starting Vim the default action. With
|
|
||||||
the "Edit with Vim" menu entry you can keep the existing file association for
|
|
||||||
double clicking on the file, and edit the file with Vim when you want. For
|
|
||||||
example, you can associate "*.mak" with your make program. You can execute
|
|
||||||
the makefile by double clicking it and use the "Edit with Vim" entry to edit
|
|
||||||
the makefile.
|
|
||||||
|
|
||||||
You can select any files and right-click to see a menu option called "Edit
|
|
||||||
with gvim". Chosing this menu option will invoke gvim with the file you have
|
|
||||||
selected. If you select multiple files, you will find two gvim-related menu
|
|
||||||
options:
|
|
||||||
"Edit with multiple gvims" -- one gvim for each file in the selection
|
|
||||||
"Edit with single gvim" -- one gvim for all the files in the selection
|
|
||||||
And if there already is a gvim running:
|
|
||||||
"Edit with existing gvim" -- edit the file with the running gvim
|
|
||||||
|
|
||||||
*install-registry*
|
|
||||||
You can add the "Edit with Vim" menu entry in an easy way by using the
|
|
||||||
"install.exe" program. It will add several registry entries for you.
|
|
||||||
|
|
||||||
You can also do this by hand. This is complicated! Use the install.exe if
|
|
||||||
you can.
|
|
||||||
|
|
||||||
1. Start the registry editor with "regedit".
|
|
||||||
2. Add these keys:
|
|
||||||
key value name value ~
|
|
||||||
HKEY_CLASSES_ROOT\CLSID\{51EEE242-AD87-11d3-9C1E-0090278BBD99}
|
|
||||||
{default} Vim Shell Extension
|
|
||||||
HKEY_CLASSES_ROOT\CLSID\{51EEE242-AD87-11d3-9C1E-0090278BBD99}\InProcServer32
|
|
||||||
{default} {path}\gvimext.dll
|
|
||||||
ThreadingModel Apartment
|
|
||||||
HKEY_CLASSES_ROOT\*\shellex\ContextMenuHandlers\gvim
|
|
||||||
{default} {51EEE242-AD87-11d3-9C1E-0090278BBD99}
|
|
||||||
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Shell Extensions\Approved
|
|
||||||
{51EEE242-AD87-11d3-9C1E-0090278BBD99}
|
|
||||||
Vim Shell Extension
|
|
||||||
HKEY_LOCAL_MACHINE\Software\Vim\Gvim
|
|
||||||
path {path}\gvim.exe
|
|
||||||
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Uninstall\vim 5.6
|
|
||||||
DisplayName Vim 5.6: Edit with Vim popup menu entry
|
|
||||||
UninstallString {path}\uninstal.exe
|
|
||||||
|
|
||||||
Replace {path} with the path that leads to the executable.
|
|
||||||
Don't type {default}, this is the value for the key itself.
|
|
||||||
|
|
||||||
To remove "Edit with Vim" from the popup menu, just remove the registry
|
|
||||||
entries mentioned above. The "uninstal.exe" program can do this for you. You
|
|
||||||
can also use the entry in the Windows standard "Add/Remove Programs" list.
|
|
||||||
|
|
||||||
If you notice that this entry overrules other file type associations, set
|
|
||||||
those associations again by hand (using Windows Explorer, see above). This
|
|
||||||
only seems to happen on some Windows NT versions (Windows bug?). Procedure:
|
|
||||||
1. Find the name of the file type. This can be done by starting the registry
|
|
||||||
editor, and searching for the extension in \\HKEY_CLASSES_ROOT
|
|
||||||
2. In a Windows Explorer, use View/Options/File Types. Search for the file
|
|
||||||
type in the list and click "Edit". In the actions list, you can select on
|
|
||||||
to be used as the default (normally the "open" action) and click on the
|
|
||||||
"Set Default" button.
|
|
||||||
|
|
||||||
|
|
||||||
Vim in the "Open With..." context menu *win32-open-with-menu*
|
|
||||||
|
|
||||||
If you use the Vim install program you have the choice to add Vim to the "Open
|
|
||||||
With..." menu. This means you can use Vim to edit many files. Not every file
|
|
||||||
(for unclear reasons...), thus the "Edit with Vim" menu entry is still useful.
|
|
||||||
|
|
||||||
One reason to add this is to be able to edit HTML files directly from Internet
|
|
||||||
Explorer. To enable this use the "Tools" menu, "Internet Options..." entry.
|
|
||||||
In the dialog select the "Programs" tab and select Vim in the "HTML editor"
|
|
||||||
choice. If it's not there than installing didn't work properly.
|
|
||||||
|
|
||||||
Doing this manually can be done with this script:
|
|
||||||
|
|
||||||
----------------------------------------------------------
|
|
||||||
REGEDIT4
|
|
||||||
|
|
||||||
[HKEY_CLASSES_ROOT\Applications\gvim.exe]
|
|
||||||
|
|
||||||
[HKEY_CLASSES_ROOT\Applications\gvim.exe\shell]
|
|
||||||
|
|
||||||
[HKEY_CLASSES_ROOT\Applications\gvim.exe\shell\edit]
|
|
||||||
|
|
||||||
[HKEY_CLASSES_ROOT\Applications\gvim.exe\shell\edit\command]
|
|
||||||
@="c:\\vim\\vim62\\gvim.exe \"%1\""
|
|
||||||
|
|
||||||
[HKEY_CLASSES_ROOT\.htm\OpenWithList\gvim.exe]
|
|
||||||
|
|
||||||
[HKEY_CLASSES_ROOT\*\OpenWithList\gvim.exe]
|
|
||||||
|
|
||||||
----------------------------------------------------------
|
|
||||||
|
|
||||||
Change the "c:\\vim\\vim62" bit to where gvim.exe is actually located.
|
|
||||||
|
|
||||||
To uninstall this run the Vim uninstall program or manually delete the
|
|
||||||
registry entries with "regedit".
|
|
||||||
|
|
||||||
==============================================================================
|
|
||||||
3. Using the clipboard *gui-clipboard*
|
|
||||||
|
|
||||||
Windows has a clipboard, where you can copy text to, and paste text from. Vim
|
|
||||||
supports this in several ways. For other systems see |gui-selections|.
|
|
||||||
|
|
||||||
The "* register reflects the contents of the clipboard. |quotestar|
|
|
||||||
|
|
||||||
When the "unnamed" string is included in the 'clipboard' option, the unnamed
|
|
||||||
register is the same. Thus you can yank to and paste from the clipboard
|
|
||||||
without prepending "* to commands.
|
|
||||||
|
|
||||||
The 'a' flag in 'guioptions' is not included by default. This means that text
|
|
||||||
is only put on the clipboard when an operation is performed on it. Just
|
|
||||||
Visually selecting text doesn't put it on the clipboard. When the 'a' flag is
|
|
||||||
included, the text is copied to the clipboard even when it is not operated
|
|
||||||
upon.
|
|
||||||
|
|
||||||
*mswin.vim*
|
|
||||||
To use the standard MS-Windows way of CTRL-X, CTRL-C and CTRL-V, use the
|
|
||||||
$VIMRUNTIME/mswin.vim script. You could add this line to your _vimrc file: >
|
|
||||||
source $VIMRUNTIME/mswin.vim
|
|
||||||
|
|
||||||
Since CTRL-C is used to copy the text to the clipboard, it can't be used to
|
|
||||||
cancel an operation. Use CTRL-Break for that.
|
|
||||||
|
|
||||||
*CTRL-V-alternative*
|
|
||||||
Since CTRL-V is used to paste, you can't use it to start a blockwise Visual
|
|
||||||
selection. You can use CTRL-Q instead. You can also use CTRL-Q in Insert
|
|
||||||
mode and Command-line mode to get the old meaning of CTRL-V. But CTRL-Q
|
|
||||||
doesn't work for terminals when it's used for control flow.
|
|
||||||
|
|
||||||
NOTE: The clipboard support still has a number of bugs. See |todo|.
|
|
||||||
|
|
||||||
==============================================================================
|
|
||||||
4. Shell Commands *gui-shell-win32*
|
|
||||||
|
|
||||||
Vim uses another window for external commands, to make it possible to run any
|
|
||||||
command. The external command gets its own environment for running, just like
|
|
||||||
it was started from a DOS prompt.
|
|
||||||
|
|
||||||
*win32-vimrun*
|
|
||||||
Executing an external command is done indirectly by the "vimrun" command. The
|
|
||||||
"vimrun.exe" must be in the path for this to work. Or it must be in the same
|
|
||||||
directory as the Vim executable. If "vimrun" cannot be found, the command is
|
|
||||||
executed directly, but then the DOS window closes immediately after the
|
|
||||||
external command has finished.
|
|
||||||
WARNING: If you close this window with the "X" button, and confirm the
|
|
||||||
question if you really want to kill the application, Vim may be killed too!
|
|
||||||
(This does not apply to commands run asynchronously with ":!start".)
|
|
||||||
|
|
||||||
In Windows 95, the window in which the commands are executed is always 25x80
|
|
||||||
characters, to be as DOS compatible as possible (this matters!). The default
|
|
||||||
system font is used. On NT, the window will be the default you have set up for
|
|
||||||
"Console" in Control Panel. On Win32s, the properties of the DOS box are
|
|
||||||
determined by _default.pif in the windows directory.
|
|
||||||
|
|
||||||
*msdos-mode*
|
|
||||||
If you get a dialog that says "This program is set to run in MS-DOS mode..."
|
|
||||||
when you run an external program, you can solve this by changing the
|
|
||||||
properties of the associated shortcut:
|
|
||||||
- Use a Windows Explorer to find the command.com that is used. It can be
|
|
||||||
c:\command.com, c:\dos\command.com, c:\windows\command.com, etc.
|
|
||||||
- With the right mouse button, select properties of this command.com.
|
|
||||||
- In the Program tab select "Advanced".
|
|
||||||
- Unselect "MS-DOS mode".
|
|
||||||
- Click "OK" twice.
|
|
||||||
|
|
||||||
*win32-!start*
|
|
||||||
Normally, Vim waits for a command to complete before continuing (this makes
|
|
||||||
sense for most shell commands which produce output for Vim to use). If you
|
|
||||||
want Vim to start a program and return immediately, you can use the following
|
|
||||||
syntax on W95 & NT: >
|
|
||||||
:!start {command}
|
|
||||||
On Win32s, you will have to go to another window instead. Don't forget that
|
|
||||||
you must tell Windows 3.1x to keep executing a DOS command in the background
|
|
||||||
while you switch back to Vim.
|
|
||||||
|
|
||||||
==============================================================================
|
|
||||||
5. Special colors *win32-colors*
|
|
||||||
|
|
||||||
On Win32, the normal DOS colors can be used. See |dos-colors|.
|
|
||||||
|
|
||||||
Additionally the system configured colors can also be used. These are known
|
|
||||||
by the names Sys_XXX, where XXX is the appropriate system color name, from the
|
|
||||||
following list (see the Win32 documentation for full descriptions). Case is
|
|
||||||
ignored. note: On Win32s not all of these colors are supported.
|
|
||||||
|
|
||||||
Sys_3DDKShadow Sys_3DFace Sys_BTNFace
|
|
||||||
Sys_3DHilight Sys_3DHighlight Sys_BTNHilight
|
|
||||||
Sys_BTNHighlight Sys_3DLight Sys_3DShadow
|
|
||||||
Sys_BTNShadow Sys_ActiveBorder Sys_ActiveCaption
|
|
||||||
Sys_AppWorkspace Sys_Background Sys_Desktop
|
|
||||||
Sys_BTNText Sys_CaptionText Sys_GrayText
|
|
||||||
Sys_Highlight Sys_HighlightText Sys_InactiveBorder
|
|
||||||
Sys_InactiveCaption Sys_InactiveCaptionText Sys_InfoBK
|
|
||||||
Sys_InfoText Sys_Menu Sys_MenuText
|
|
||||||
Sys_ScrollBar Sys_Window Sys_WindowFrame
|
|
||||||
Sys_WindowText
|
|
||||||
|
|
||||||
Probably the most useful values are
|
|
||||||
Sys_Window Normal window background
|
|
||||||
Sys_WindowText Normal window text
|
|
||||||
Sys_Highlight Highlighted background
|
|
||||||
Sys_HighlightText Highlighted text
|
|
||||||
|
|
||||||
These extra colors are also available:
|
|
||||||
Gray, Grey, LightYellow, SeaGreen, Orange, Purple, SlateBlue, Violet,
|
|
||||||
|
|
||||||
*rgb.txt*
|
|
||||||
Additionally, colors defined by a "rgb.txt" file can be used. This file is
|
|
||||||
well known from X11. A few lines from it: >
|
|
||||||
|
|
||||||
255 218 185 peach puff
|
|
||||||
205 133 63 peru
|
|
||||||
255 181 197 pink
|
|
||||||
|
|
||||||
This shows the layout of the file: First the R, G and B value as a decimal
|
|
||||||
number, followed by the name of the color. The four fields are separated by
|
|
||||||
spaces.
|
|
||||||
|
|
||||||
You can get an rgb.txt file from any X11 distribution. It is located in a
|
|
||||||
directory like "/usr/X11R6/lib/X11/". For Vim it must be located in the
|
|
||||||
$VIMRUNTIME directory. Thus the file can be found with "$VIMRUNTIME/rgb.txt".
|
|
||||||
|
|
||||||
==============================================================================
|
|
||||||
*gui-w32-dialogs* *dialog*
|
|
||||||
6. Windows dialogs & browsers
|
|
||||||
|
|
||||||
The Win32 GUI can use familiar Windows components for some operations, as well
|
|
||||||
as the traditional interface shared with the console version.
|
|
||||||
|
|
||||||
|
|
||||||
6.1 Dialogs
|
|
||||||
|
|
||||||
The dialogs displayed by the "confirm" family (i.e. the 'confirm' option,
|
|
||||||
|:confirm| command and |confirm()| function) are GUI-based rather than the
|
|
||||||
console-based ones used by other versions. The 'c' flag in 'guioptions'
|
|
||||||
changes this.
|
|
||||||
|
|
||||||
|
|
||||||
6.2 File Browsers
|
|
||||||
|
|
||||||
When prepending ":browse" before file editing commands, a file requester is
|
|
||||||
used to allow you to select an existing file. See |:browse|.
|
|
||||||
|
|
||||||
|
|
||||||
6.3 Tearoff Menus
|
|
||||||
|
|
||||||
The Win32 GUI emulates Motif's tear-off menus. At the top of each menu you
|
|
||||||
will see a small graphic "rip here" sign. Selecting it will cause a floating
|
|
||||||
window to be created with the same menu entries on it. The floating menu can
|
|
||||||
then be accessed just as if it was the original (including sub-menus), but
|
|
||||||
without having to go to the menu bar each time.
|
|
||||||
This is most useful if you find yourself using a command buried in a sub-menu
|
|
||||||
over and over again.
|
|
||||||
The tearoff menus can be positioned where you like, and always stay just above
|
|
||||||
the Main Vim window. You can get rid of them by closing them as usual; they
|
|
||||||
also of course close when you exit Vim.
|
|
||||||
|
|
||||||
*:tearoff* *:te*
|
|
||||||
:te[aroff] {name} Tear-off the menu {name}. The menu named must have at
|
|
||||||
least one subentry, but need not appear on the
|
|
||||||
menu-bar (see |win32-hidden-menus|).
|
|
||||||
|
|
||||||
Example: >
|
|
||||||
:tearoff File
|
|
||||||
will make the "File" menu (if there is one) appear as a tearoff menu. >
|
|
||||||
|
|
||||||
:amenu ]Toolbar.Make :make<CR>
|
|
||||||
:tearoff ]Toolbar
|
|
||||||
This creates a floating menu that doesn't exist on the main menu-bar.
|
|
||||||
|
|
||||||
Note that a menu that starts with ']' will not be displayed.
|
|
||||||
|
|
||||||
==============================================================================
|
|
||||||
7. Command line arguments *gui-w32-cmdargs*
|
|
||||||
|
|
||||||
Analysis of a command line into parameters is not standardised in MS Windows.
|
|
||||||
Gvim has to provide logic to analyse a command line. This logic is likely to
|
|
||||||
be different from the default logic provided by a compilation system used to
|
|
||||||
build vim. The differences relate to unusual double quote (") usage.
|
|
||||||
The arguments "C:\My Music\freude.txt" and "+/Sch\"iller" are handled in the
|
|
||||||
same way. The argument "+/Sch""iller" may be handled different by gvim and
|
|
||||||
vim, depending what it was compiled with.
|
|
||||||
|
|
||||||
The rules are:
|
|
||||||
a) A parameter is a sequence of graphic characters.
|
|
||||||
b) Parameters are separated by white space.
|
|
||||||
c) A parameter can be enclosed in double quotes to include white space.
|
|
||||||
d) A sequence of zero or more backslashes (\) and a double quote (")
|
|
||||||
is special. The effective number of backslashes is halved, rounded
|
|
||||||
down. An even number of backslashes reverses the acceptability of
|
|
||||||
spaces and tabs, an odd number of backslashes produces a literal
|
|
||||||
double quote.
|
|
||||||
|
|
||||||
So:
|
|
||||||
" is a special double quote
|
|
||||||
\" is a literal double quote
|
|
||||||
\\" is a literal backslash and a special double quote
|
|
||||||
\\\" is a literal backslash and a literal double quote
|
|
||||||
\\\\" is 2 literal backslashes and a special double quote
|
|
||||||
\\\\\" is 2 literal backslashes and a literal double quote
|
|
||||||
etc.
|
|
||||||
|
|
||||||
Example: >
|
|
||||||
gvim "C:\My Music\freude" +"set ignorecase" +/"\"foo\\" +\"bar\\\"
|
|
||||||
|
|
||||||
opens "C:\My Music\freude" and executes the line mode commands: >
|
|
||||||
set ignorecase; /"foo\ and /bar\"
|
|
||||||
|
|
||||||
==============================================================================
|
|
||||||
8. Various *gui-w32-various*
|
|
||||||
|
|
||||||
*gui-w32-printing*
|
|
||||||
The "File/Print" menu prints the text with syntax highlighting, see
|
|
||||||
|:hardcopy|. If you just want to print the raw text and have a default
|
|
||||||
printer installed this should also work: >
|
|
||||||
:w >>prn
|
|
||||||
|
|
||||||
Vim supports a number of standard MS Windows features. Some of these are
|
|
||||||
detailed elsewhere: see |'mouse'|, |win32-hidden-menus|.
|
|
||||||
|
|
||||||
*drag-n-drop-win32*
|
|
||||||
You can drag and drop one or more files into the Vim window, where they will
|
|
||||||
be opened as normal. See |drag-n-drop|.
|
|
||||||
|
|
||||||
*:simalt* *:si*
|
|
||||||
:sim[alt] {key} simulate pressing {key} while holding Alt pressed.
|
|
||||||
{not in Vi} {only for Win32 versions}
|
|
||||||
|
|
||||||
Normally, Vim takes control of all Alt-<Key> combinations, to increase the
|
|
||||||
number of possible mappings. This clashes with the standard use of Alt as the
|
|
||||||
key for accessing menus.
|
|
||||||
The quick way of getting standard behavior is to set the 'winaltkeys' option
|
|
||||||
to "yes". This however prevents you from mapping Alt keys at all.
|
|
||||||
Another way is to set 'winaltkeys' to "menu". Menu shortcut keys are then
|
|
||||||
handled by windows, other ALT keys can be mapped. This doesn't allow a
|
|
||||||
dependency on the current state though.
|
|
||||||
To get round this, the :simalt command allows Vim (when 'winaltkeys' is not
|
|
||||||
"yes") to fake a Windows-style Alt keypress. You can use this to map Alt key
|
|
||||||
combinations (or anything else for that matter) to produce standard Windows
|
|
||||||
actions. Here are some examples: >
|
|
||||||
|
|
||||||
:map <M-f> :simalt f<CR>
|
|
||||||
This makes Alt-F pop down the 'File' menu (with the stock Menu.vim) by
|
|
||||||
simulating the keystrokes Alt, F. >
|
|
||||||
:map <M-Space> :simalt ~<CR>
|
|
||||||
This maps Alt-Space to pop down the system menu for the Vim window. Note that
|
|
||||||
~ is used by simalt to represent the <Space> character. >
|
|
||||||
:map <C-n> :simalt ~n<CR>
|
|
||||||
Maps Control-N to produce the keys Alt-Space followed by N. This minimizes the
|
|
||||||
Vim window via the system menu.
|
|
||||||
|
|
||||||
*intellimouse-wheel-problems*
|
|
||||||
When using the Intellimouse mouse wheel causes Vim to stop accepting input, go
|
|
||||||
to:
|
|
||||||
ControlPanel - Mouse - Wheel - UniversalScrolling - Exceptions
|
|
||||||
|
|
||||||
And add gvim to the list of applications. This problem only appears to happen
|
|
||||||
with the Intellimouse driver 2.2 and when "Universal Scrolling" is turned on.
|
|
||||||
|
|
||||||
vim:tw=78:sw=4:ts=8:ft=help:norl:
|
|
||||||
@@ -1,576 +0,0 @@
|
|||||||
*gui_x11.txt* For Vim version 6.3. Last change: 2004 Mar 16
|
|
||||||
|
|
||||||
|
|
||||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
|
||||||
|
|
||||||
|
|
||||||
Vim's Graphical User Interface *gui-x11* *GUI-X11*
|
|
||||||
*Athena* *Motif*
|
|
||||||
1. Starting the X11 GUI |gui-x11-start|
|
|
||||||
2. GUI Resources |gui-resources|
|
|
||||||
3. Shell Commands |gui-pty|
|
|
||||||
4. Various |gui-x11-various|
|
|
||||||
5. GTK version |gui-gtk|
|
|
||||||
6. GNOME version |gui-gnome|
|
|
||||||
7. Compiling |gui-x11-compiling|
|
|
||||||
8. X11 selection mechanism |x11-selection|
|
|
||||||
|
|
||||||
Other relevant documentation:
|
|
||||||
|gui.txt| For generic items of the GUI.
|
|
||||||
|
|
||||||
{Vi does not have any of these commands}
|
|
||||||
|
|
||||||
==============================================================================
|
|
||||||
1. Starting the X11 GUI *gui-x11-start* *E665*
|
|
||||||
|
|
||||||
Then you can run the GUI version of Vim in either of these ways:
|
|
||||||
gvim [options] [files...]
|
|
||||||
vim -g [options] [files...]
|
|
||||||
|
|
||||||
So if you call the executable "gvim", or make "gvim" a link to the executable,
|
|
||||||
then the GUI version will automatically be used. Additional characters may be
|
|
||||||
added after "gvim", for example "gvim-5".
|
|
||||||
|
|
||||||
You may also start up the GUI from within the terminal version by using one of
|
|
||||||
these commands:
|
|
||||||
:gui [++opt] [+cmd] [-f|-b] [files...] *:gu* *:gui*
|
|
||||||
:gvim [++opt] [+cmd] [-f|-b] [files...] *:gv* *:gvim*
|
|
||||||
The "-f" option runs Vim in the foreground.
|
|
||||||
The "-b" option runs Vim in the background (this is the default).
|
|
||||||
Also see |++opt| and |+cmd|.
|
|
||||||
|
|
||||||
*gui-fork*
|
|
||||||
When the GUI is started, it does a fork() and exits the current process.
|
|
||||||
When gvim was started from a shell this makes the shell accept further
|
|
||||||
commands. If you don't want this (e.g. when using gvim for a mail program
|
|
||||||
that waits for gvim to exit), start gvim with "gvim -f", "vim -gf" or use
|
|
||||||
":gui -f". Don't use "vim -fg", because "-fg" specifies the foreground
|
|
||||||
color.
|
|
||||||
|
|
||||||
When using "gvim -f" and then ":gui", Vim will run in the foreground. The
|
|
||||||
"-f" argument will be remembered. To force running Vim in the background use
|
|
||||||
":gui -b".
|
|
||||||
|
|
||||||
"gvim --nofork" does the same as "gvim -f".
|
|
||||||
|
|
||||||
If you want the GUI to run in the foreground always, include the 'f'
|
|
||||||
flag in 'guioptions'. |-f|.
|
|
||||||
|
|
||||||
==============================================================================
|
|
||||||
2. GUI Resources *gui-resources* *.Xdefaults*
|
|
||||||
|
|
||||||
If using the Motif or Athena version of the GUI (not for the GTK+ or Win32
|
|
||||||
version), a number of X resources are available. You should use Vim's class
|
|
||||||
"Vim" when setting these. They are as follows:
|
|
||||||
|
|
||||||
Resource name Meaning ~
|
|
||||||
|
|
||||||
reverseVideo Boolean: should reverse video be used?
|
|
||||||
background Color of background.
|
|
||||||
foreground Color of normal text.
|
|
||||||
scrollBackground Color of trough portion of scrollbars.
|
|
||||||
scrollForeground Color of slider and arrow portions of scrollbars.
|
|
||||||
menuBackground Color of menu backgrounds.
|
|
||||||
menuForeground Color of menu foregrounds.
|
|
||||||
tooltipForeground Color of tooltip and balloon foreground.
|
|
||||||
tooltipBackground Color of tooltip and balloon background.
|
|
||||||
|
|
||||||
font Name of font used for normal text.
|
|
||||||
boldFont Name of font used for bold text.
|
|
||||||
italicFont Name of font used for italic text.
|
|
||||||
boldItalicFont Name of font used for bold, italic text.
|
|
||||||
menuFont Name of font used for the menus, used when compiled
|
|
||||||
without the |+xfontset| feature
|
|
||||||
menuFontSet Name of fontset used for the menus, used when compiled
|
|
||||||
with the |+xfontset| feature
|
|
||||||
tooltipFont Name of the font used for the tooltip and balloons.
|
|
||||||
When compiled with the |+xfontset| feature this is a
|
|
||||||
fontset name.
|
|
||||||
|
|
||||||
geometry Initial geometry to use for gvim's window (default
|
|
||||||
is same size as terminal that started it).
|
|
||||||
scrollbarWidth Thickness of scrollbars.
|
|
||||||
borderWidth Thickness of border around text area.
|
|
||||||
menuHeight Height of the menu bar (only for Athena).
|
|
||||||
|
|
||||||
A special font for italic, bold, and italic-bold text will only be used if
|
|
||||||
the user has specified one via a resource. No attempt is made to guess what
|
|
||||||
fonts should be used for these based on the normal text font.
|
|
||||||
|
|
||||||
Note that the colors can also be set with the ":highlight" command, using the
|
|
||||||
"Normal", "Menu", "Tooltip", and "Scrollbar" groups. Example: >
|
|
||||||
:highlight Menu guibg=lightblue
|
|
||||||
:highlight Tooltip guibg=yellow
|
|
||||||
:highlight Scrollbar guibg=lightblue guifg=blue
|
|
||||||
:highlight Normal guibg=grey90
|
|
||||||
<
|
|
||||||
*font-sizes*
|
|
||||||
Note: All fonts (except for the menu and tooltip) must be of the same size!!!
|
|
||||||
If you don't do this, text will disappear or mess up the display. Vim does
|
|
||||||
not check the font sizes. It's the size in screen pixels that must be the
|
|
||||||
same. Note that some fonts that have the same point size don't have the same
|
|
||||||
pixel size! Additionally, the positioning of the fonts must be the same
|
|
||||||
(ascent and descent). You can check this with "xlsfonts -l {fontname}".
|
|
||||||
|
|
||||||
If any of these things are also set with Vim commands, eg with
|
|
||||||
":set guifont=Screen15", then this will override the X resources (currently
|
|
||||||
'guifont' is the only option that is supported).
|
|
||||||
|
|
||||||
Here is an example of what you might put in your ~/.Xdefaults file: >
|
|
||||||
|
|
||||||
Vim*useSchemes: all
|
|
||||||
Vim*sgiMode: true
|
|
||||||
Vim*useEnhancedFSB: true
|
|
||||||
Vim.foreground: Black
|
|
||||||
Vim.background: Wheat
|
|
||||||
Vim*fontList: 7x13
|
|
||||||
|
|
||||||
The first three of these are standard resources on Silicon Graphics machines
|
|
||||||
which make Motif applications look even better, highly recommended!
|
|
||||||
|
|
||||||
The "Vim*fontList" is to set the menu font for Motif. Example: >
|
|
||||||
Vim*menuBar*fontList: -*-courier-medium-r-*-*-10-*-*-*-*-*-*-*
|
|
||||||
With Athena: >
|
|
||||||
Vim*menuBar*SmeBSB*font: -*-courier-medium-r-*-*-10-*-*-*-*-*-*-*
|
|
||||||
Vim*menuBar*MenuButton*font: -*-courier-medium-r-*-*-10-*-*-*-*-*-*-*
|
|
||||||
|
|
||||||
NOTE: A more portable, and indeed more correct, way to specify the menu font
|
|
||||||
in either Motif or Athena is through the resource: >
|
|
||||||
Vim.menuFont: -*-courier-medium-r-*-*-10-*-*-*-*-*-*-*
|
|
||||||
Or, when compiled with the |+xfontset| feature: >
|
|
||||||
Vim.menuFontSet: -*-courier-medium-r-*-*-10-*-*-*-*-*-*-*
|
|
||||||
|
|
||||||
Don't use "Vim*geometry" in the defaults. This will break the menus. Use
|
|
||||||
"Vim.geometry" instead.
|
|
||||||
|
|
||||||
If you get an error message "Cannot allocate colormap entry for "gray60",
|
|
||||||
try adding this to your Vim resources (change the colors to your liking): >
|
|
||||||
|
|
||||||
Vim*scrollBackground: Black
|
|
||||||
Vim*scrollForeground: Blue
|
|
||||||
|
|
||||||
The resources can also be set with arguments to Vim:
|
|
||||||
|
|
||||||
argument meaning ~
|
|
||||||
*-gui*
|
|
||||||
-display {display} Run vim on {display} *-display*
|
|
||||||
-iconic Start vim iconified *-iconic*
|
|
||||||
-background {color} Use {color} for the background *-background*
|
|
||||||
-bg {color} idem *-bg*
|
|
||||||
-foreground {color} Use {color} for normal text *-foreground*
|
|
||||||
-fg {color} idem *-fg*
|
|
||||||
-ul {color} idem *-ul*
|
|
||||||
-font {font} Use {font} for normal text *-font*
|
|
||||||
-fn {font} idem *-fn*
|
|
||||||
-boldfont {font} Use {font} for bold text *-boldfont*
|
|
||||||
-italicfont {font} Use {font} for italic text *-italicfont*
|
|
||||||
-menufont {font} Use {font} for menu items *-menufont*
|
|
||||||
-menufontset {fontset} Use {fontset} for menu items *-menufontset*
|
|
||||||
-mf {font} idem *-mf*
|
|
||||||
-geometry {geom} Use {geom} for initial geometry *-geometry*
|
|
||||||
-geom {geom} idem, see |-geometry-example| *-geom*
|
|
||||||
-borderwidth {width} Use a border width of {width} *-borderwidth*
|
|
||||||
-bw {width} idem *-bw*
|
|
||||||
*-scrollbarwidth*
|
|
||||||
-scrollbarwidth {width} Use a scrollbar width of {width}
|
|
||||||
-sw {width} idem *-sw*
|
|
||||||
-menuheight {height} Use a menu bar height of {height} *-menuheight*
|
|
||||||
-mh {height} idem *-mh*
|
|
||||||
NOTE: On Motif the value is ignored, the menu height
|
|
||||||
is computed to fit the menus.
|
|
||||||
-reverse Use reverse video *-reverse*
|
|
||||||
-rv idem *-rv*
|
|
||||||
+reverse Don't use reverse video *-+reverse*
|
|
||||||
+rv idem *-+rv*
|
|
||||||
-xrm {resource} Set the specified resource *-xrm*
|
|
||||||
|
|
||||||
Note about reverse video: Vim checks that the result is actually a light text
|
|
||||||
on a dark background. The reason is that some X11 versions swap the colors,
|
|
||||||
and some don't. These two examples will both give yellow text on a blue
|
|
||||||
background:
|
|
||||||
gvim -fg Yellow -bg Blue -reverse
|
|
||||||
gvim -bg Yellow -fg Blue -reverse
|
|
||||||
|
|
||||||
*-geometry-example*
|
|
||||||
An example for the geometry argument: >
|
|
||||||
gvim -geometry 80x63+8+100
|
|
||||||
This creates a window with 80 columns and 63 lines at position 8 pixels from
|
|
||||||
the left and 100 pixels from the top of the screen.
|
|
||||||
|
|
||||||
==============================================================================
|
|
||||||
3. Shell Commands *gui-pty*
|
|
||||||
|
|
||||||
WARNING: Executing an external command from the GUI will not always work.
|
|
||||||
"normal" commands like "ls", "grep" and "make" mostly work fine. Commands
|
|
||||||
that require an intelligent terminal like "less" and "ispell" won't work.
|
|
||||||
Some may even hang and need to be killed from another terminal. So be
|
|
||||||
careful!
|
|
||||||
|
|
||||||
There are two ways to do the I/O with a shell command: Pipes and a pseudo-tty.
|
|
||||||
The default is to use a pseudo-tty. This should work best on most systems.
|
|
||||||
|
|
||||||
Unfortunately, the implementation of the pseudo-tty is different on every Unix
|
|
||||||
system. And some systems require root permission. To avoid running into
|
|
||||||
problems with a pseudo-tty when you least expect it, test it when not editing
|
|
||||||
a file. Be prepared to "kill" the started command or Vim. Commands like
|
|
||||||
":r !cat" may hang!
|
|
||||||
|
|
||||||
If using a pseudo-tty does not work for you, reset the 'guipty' option: >
|
|
||||||
|
|
||||||
:set noguipty
|
|
||||||
|
|
||||||
Using a pipe should work on any Unix system, but there are disadvantages:
|
|
||||||
- Some shell commands will notice that a pipe is being used and behave
|
|
||||||
differently. E.g., ":!ls" will list the files in one column.
|
|
||||||
- The ":sh" command won't show a prompt, although it will sort of work.
|
|
||||||
- When using ":make" it's not possible to interrupt with a CTRL-C.
|
|
||||||
|
|
||||||
Typeahead while the external command is running is often lost. This happens
|
|
||||||
both with a pipe and a pseudo-tty. This is a known problem, but it seems it
|
|
||||||
can't be fixed (or at least, it's very difficult).
|
|
||||||
|
|
||||||
*gui-pty-erase*
|
|
||||||
When your erase character is wrong for an external command, you should fix
|
|
||||||
this in your "~/.cshrc" file, or whatever file your shell uses for
|
|
||||||
initializations. For example, when you want to use backspace to delete
|
|
||||||
characters, but hitting backspaces produces "^H" instead, try adding this to
|
|
||||||
your "~/.cshrc": >
|
|
||||||
stty erase ^H
|
|
||||||
The ^H is a real CTRL-H, type it as CTRL-V CTRL-H.
|
|
||||||
|
|
||||||
==============================================================================
|
|
||||||
4. Various *gui-x11-various*
|
|
||||||
|
|
||||||
*gui-x11-printing*
|
|
||||||
The "File/Print" menu simply sends the current buffer to "lpr". No options or
|
|
||||||
whatever. If you want something else, you can define your own print command.
|
|
||||||
For example: >
|
|
||||||
|
|
||||||
:10amenu File.Print :w !lpr -Php3
|
|
||||||
:10vmenu File.Print :w !lpr -Php3
|
|
||||||
<
|
|
||||||
*X11-icon*
|
|
||||||
Vim uses a black&white icon by default when compiled with Motif or Athena. A
|
|
||||||
colored Vim icon is included as $VIMRUNTIME/vim32x32.xpm. For GTK+, this is
|
|
||||||
the builtin icon used. Unfortunately, how you should install it depends on
|
|
||||||
your window manager. When you use this, remove the 'i' flag from
|
|
||||||
'guioptions', to remove the black&white icon: >
|
|
||||||
:set guioptions-=i
|
|
||||||
|
|
||||||
If you use one of the fvwm* family of window managers simply add this line to
|
|
||||||
your .fvwm2rc configuration file: >
|
|
||||||
|
|
||||||
Style "vim" Icon vim32x32.xpm
|
|
||||||
|
|
||||||
Make sure the icon file's location is consistent with the window manager's
|
|
||||||
ImagePath statement. Either modify the ImagePath from within your .fvwm2rc or
|
|
||||||
drop the icon into one the pre-defined directories: >
|
|
||||||
|
|
||||||
ImagePath /usr/X11R6/include/X11/pixmaps:/usr/X11R6/include/X11/bitmaps
|
|
||||||
|
|
||||||
Note: older versions of fvwm use "IconPath" instead of "ImagePath".
|
|
||||||
|
|
||||||
For CDE "dtwm" (a derivative of Motif) add this line in the .Xdefaults: >
|
|
||||||
Dtwm*Vim*iconImage: /usr/local/share/vim/vim32x32.xpm
|
|
||||||
|
|
||||||
For "mwm" (Motif window manager) the line would be: >
|
|
||||||
Mwm*Vim*iconImage: /usr/local/share/vim/vim32x32.xpm
|
|
||||||
|
|
||||||
Mouse Pointers Available in X11 *X11_mouse_shapes*
|
|
||||||
|
|
||||||
By using the |'mouseshape'| option, the mouse pointer can be automatically
|
|
||||||
changed whenever Vim enters one of its various modes (e.g., Insert or
|
|
||||||
Command). Currently, the available pointers are:
|
|
||||||
|
|
||||||
arrow an arrow pointing northwest
|
|
||||||
beam a I-like vertical bar
|
|
||||||
size an arrow pointing up and down
|
|
||||||
busy a wristwatch
|
|
||||||
blank an invisible pointer
|
|
||||||
crosshair a thin "+" sign
|
|
||||||
hand1 a dark hand pointing northeast
|
|
||||||
hand2 a light hand pointing northwest
|
|
||||||
pencil a pencil pointing southeast
|
|
||||||
question question_arrow
|
|
||||||
right_arrow an arrow pointing northeast
|
|
||||||
up_arrow an arrow pointing upwards
|
|
||||||
|
|
||||||
Additionally, any of the mouse pointers that are built into X11 may be
|
|
||||||
used by specifying an integer from the X11/cursorfont.h include file.
|
|
||||||
|
|
||||||
If a name is used that exists on other systems, but not in X11, the default
|
|
||||||
"arrow" pointer is used.
|
|
||||||
|
|
||||||
==============================================================================
|
|
||||||
5. GTK version *gui-gtk* *GTK+* *GTK*
|
|
||||||
|
|
||||||
The GTK version of the GUI works a little bit different.
|
|
||||||
|
|
||||||
GTK does _not_ use the traditional X resource settings. Thus items in your
|
|
||||||
~/.Xdefaults or app-defaults files are not used.
|
|
||||||
Many of the traditional X command line arguments are not supported. (e.g.,
|
|
||||||
stuff like -bg, -fg, etc). The ones that are supported are:
|
|
||||||
|
|
||||||
command line argument resource name meaning ~
|
|
||||||
-fn or -font .font font name for the text
|
|
||||||
-geom or -geometry .geometry size of the gvim window
|
|
||||||
-rv or -reverse *reverseVideo white text on black background
|
|
||||||
-display display to be used
|
|
||||||
-fg -foreground {color} foreground color
|
|
||||||
-bg -background {color} background color
|
|
||||||
|
|
||||||
To set the font, see |'guifont'|. For GTK, there's also a menu option that
|
|
||||||
does this.
|
|
||||||
|
|
||||||
Additionally, there are these command line arguments, which are handled by GTK
|
|
||||||
internally. Look in the GTK documentation for how they are used:
|
|
||||||
--sync
|
|
||||||
--gdk-debug
|
|
||||||
--gdk-no-debug
|
|
||||||
--no-xshm (not in GTK+ 2)
|
|
||||||
--xim-preedit (not in GTK+ 2)
|
|
||||||
--xim-status (not in GTK+ 2)
|
|
||||||
--gtk-debug
|
|
||||||
--gtk-no-debug
|
|
||||||
--g-fatal-warnings
|
|
||||||
--gtk-module
|
|
||||||
--display (GTK+ counterpart of -display; works the same way.)
|
|
||||||
--screen (The screen number; for GTK+ 2.2 multihead support.)
|
|
||||||
|
|
||||||
These arguments are ignored when the |+netbeans_intg| feature is used:
|
|
||||||
-xrm
|
|
||||||
-mf
|
|
||||||
|
|
||||||
As for colors, Vim's color settings (for syntax highlighting) is still
|
|
||||||
done the traditional Vim way. See |:highlight| for more help.
|
|
||||||
|
|
||||||
If you want to set the colors of remaining gui components (e.g., the
|
|
||||||
menubar, scrollbar, whatever), those are GTK specific settings and you
|
|
||||||
need to set those up in some sort of gtkrc file. You'll have to refer
|
|
||||||
to the GTK documentation, however little there is, on how to do this.
|
|
||||||
See http://developer.gnome.org/doc/API/2.0/gtk/gtk-Resource-Files.html
|
|
||||||
for more information.
|
|
||||||
|
|
||||||
*gtk-tooltip-colors*
|
|
||||||
Example, which sets the tooltip colors to black on light-yellow: >
|
|
||||||
|
|
||||||
style "tooltips"
|
|
||||||
{
|
|
||||||
bg[NORMAL] = "#ffffcc"
|
|
||||||
fg[NORMAL] = "#000000"
|
|
||||||
}
|
|
||||||
|
|
||||||
widget "gtk-tooltips*" style "tooltips"
|
|
||||||
|
|
||||||
Write this in the file ~/.gtkrc and it will be used by GTK+. For GTK+ 2
|
|
||||||
you might have to use the file ~/.gtkrc-2.0 instead, depending on your
|
|
||||||
distribution.
|
|
||||||
|
|
||||||
Using Vim as a GTK+ plugin *gui-gtk-socketid*
|
|
||||||
|
|
||||||
When the GTK+ version of Vim starts up normally, it creates its own top level
|
|
||||||
window (technically, a 'GtkWindow'). GTK+ provides an embedding facility with
|
|
||||||
its GtkSocket and GtkPlug widgets. If one GTK+ application creates a
|
|
||||||
GtkSocket widget in one of its windows, an entirely different GTK+ application
|
|
||||||
may embed itself into the first application by creating a top-level GtkPlug
|
|
||||||
widget using the socket's ID.
|
|
||||||
|
|
||||||
If you pass Vim the command-line option '--socketid' with a decimal or
|
|
||||||
hexadecimal value, Vim will create a GtkPlug widget using that value instead
|
|
||||||
of the normal GtkWindow. This enables Vim to act as a GTK+ plugin.
|
|
||||||
|
|
||||||
This really is a programmer's interface, and is of no use without a supporting
|
|
||||||
application to spawn the Vim correctly. For more details on GTK+ sockets, see
|
|
||||||
http://www.gtk.org/api/
|
|
||||||
|
|
||||||
Note that this feature requires the latest GTK version. GTK 1.2.10 still has
|
|
||||||
a small problem. The socket feature has not yet been tested with GTK+ 2 --
|
|
||||||
feel free to volunteer.
|
|
||||||
|
|
||||||
==============================================================================
|
|
||||||
6. GNOME version *gui-gnome* *Gnome* *GNOME*
|
|
||||||
|
|
||||||
The GNOME GUI works just like the GTK+ version. See |GTK+| above for how it
|
|
||||||
works. It looks a bit different though, and implements one important feature
|
|
||||||
that's not available in the plain GTK+ GUI: Interaction with the session
|
|
||||||
manager. |gui-gnome-session|
|
|
||||||
|
|
||||||
These are the different looks:
|
|
||||||
- Uses GNOME dialogs (GNOME 1 only). The GNOME 2 GUI uses the same nice
|
|
||||||
dialogs as the GTK+ 2 version.
|
|
||||||
- Uses the GNOME dock, so that the toolbar and menubar can be moved to
|
|
||||||
different locations other than the top (e.g., the toolbar can be placed on
|
|
||||||
the left, right, top, or bottom). The placement of the menubar and
|
|
||||||
toolbar is only saved in the GNOME 2 version.
|
|
||||||
- That means the menubar and toolbar handles are back! Yeah! And the
|
|
||||||
resizing grid still works too.
|
|
||||||
|
|
||||||
GNOME is automatically compiled with if it was found by configure.
|
|
||||||
(FIXME: Is this still true? Use --enable-gnome-check to force it to.)
|
|
||||||
|
|
||||||
GNOME session support *gui-gnome-session* *gnome-session*
|
|
||||||
|
|
||||||
On logout, Vim shows the well-known exit confirmation dialog if any buffers
|
|
||||||
are modified. Clicking [Cancel] will stop the logout process. Otherwise the
|
|
||||||
current session is stored to disk by using the |:mksession| command, and
|
|
||||||
restored the next time you log in.
|
|
||||||
|
|
||||||
The GNOME session support should also work with the KDE session manager.
|
|
||||||
If you are experiencing any problems please report them as bugs.
|
|
||||||
|
|
||||||
Note: The automatic session save works entirely transparent, in order to
|
|
||||||
avoid conflicts with your own session files, scripts and autocommands. That
|
|
||||||
means in detail:
|
|
||||||
- The session file is stored to a separate directory (usually $HOME/.gnome2).
|
|
||||||
- 'sessionoptions' is ignored, and a hardcoded set of appropriate flags is
|
|
||||||
used instead: >
|
|
||||||
blank,curdir,folds,globals,help,options,winsize
|
|
||||||
- The internal variable |v:this_session| is not changed when storing the
|
|
||||||
session. Also, it is restored to its old value when logging in again.
|
|
||||||
|
|
||||||
The position and size of the GUI window is not saved by Vim since doing so
|
|
||||||
is the window manager's job. But if compiled with GTK+ 2 support, Vim helps
|
|
||||||
the WM to identify the window by restoring the window role (using the |--role|
|
|
||||||
command line argument).
|
|
||||||
|
|
||||||
==============================================================================
|
|
||||||
7. Compiling *gui-x11-compiling*
|
|
||||||
|
|
||||||
If using X11, Vim's Makefile will by default first try to find the necessary
|
|
||||||
GTK+ files on your system. If the GTK+ files cannot be found, then the Motif
|
|
||||||
files will be searched for. Finally, if this fails, the Athena files will be
|
|
||||||
searched for. If all three fail, the GUI will be disabled.
|
|
||||||
|
|
||||||
For GTK+, Vim's configuration process requires that GTK+ be properly
|
|
||||||
installed. That is, the shell script 'gtk-config' must be in your PATH, and
|
|
||||||
you can already successful compile, build, and execute a GTK+ program. The
|
|
||||||
reason for this is because the compiler flags (CFLAGS) and link flags
|
|
||||||
(LDFLAGS) are obtained through the 'gtk-config' shell script.
|
|
||||||
|
|
||||||
If you want to build with GTK+ 2 support pass the --enable-gtk2-check argument
|
|
||||||
to ./configure. Optionally, support for GNOME 2 will be compiled if the
|
|
||||||
--enable-gnome-check option is also given. Note that the support for GTK+ 2
|
|
||||||
is still experimental. However, many people have reported that it works just
|
|
||||||
fine for them.
|
|
||||||
|
|
||||||
Otherwise, if you are using Motif or Athena, when you have the Motif or Athena
|
|
||||||
files in a directory where configure doesn't look, edit the Makefile to enter
|
|
||||||
the names of the directories. Search for "GUI_INC_LOC" for an example to set
|
|
||||||
the Motif directories, "CONF_OPT_X" for Athena.
|
|
||||||
|
|
||||||
*gui-x11-gtk*
|
|
||||||
At the time of this writing, you may use either GTK+ version 1.0.6 or 1.2. It
|
|
||||||
is suggested that you use v1.2 since not all of Vim's GUI features are present
|
|
||||||
if using v1.0.6. For instance, there are no tearoff menus present in v1.0.6.
|
|
||||||
Using a version from GTK+'s CVS tree may or may not work, and is therefore not
|
|
||||||
supported and not recommended.
|
|
||||||
|
|
||||||
For the experimental GTK+ 2 GUI, using the latest release of the GTK+ 2.0 or
|
|
||||||
GTK+ 2.2 series is recommended. CVS HEAD seems to work fine most of time as
|
|
||||||
well.
|
|
||||||
|
|
||||||
Lastly, although GTK+ has supposedly been ported to the Win32 platform, this
|
|
||||||
has not been tested with Vim and is also unsupported. Also, it's unlikely to
|
|
||||||
even compile since GTK+ GUI uses parts of the generic X11 code. This might
|
|
||||||
change in distant future; particularly because getting rid of the X11 centric
|
|
||||||
code parts is also required for GTK+ framebuffer support.
|
|
||||||
|
|
||||||
*gui-x11-motif*
|
|
||||||
For Motif, you need at least Motif version 1.2 and/or X11R5. Motif 2.0 and
|
|
||||||
X11R6 are OK. Motif 1.1 and X11R4 might work, no guarantee (there may be a
|
|
||||||
few problems, but you might make it compile and run with a bit of work, please
|
|
||||||
send me the patches if you do). The newest releases of LessTif have been
|
|
||||||
reported to work fine too.
|
|
||||||
|
|
||||||
*gui-x11-athena*
|
|
||||||
The Athena version uses the Xaw widget set by default. If you have the 3D
|
|
||||||
version, you might want to link with Xaw3d instead. This will make the
|
|
||||||
menus look a bit better. Edit the Makefile and look for "XAW_LIB". The
|
|
||||||
scrollbars will remain the same, because Vim has its own, which are already
|
|
||||||
3D (in fact, they look more like Motif).
|
|
||||||
|
|
||||||
*gui-x11-neXtaw*
|
|
||||||
The neXtaw version is mostly like Athena, but uses different widgets.
|
|
||||||
|
|
||||||
*gui-x11-misc*
|
|
||||||
In general, do not try to mix files from different GTK+, Motif, Athena and X11
|
|
||||||
versions. This will cause problems. For example, using header files for
|
|
||||||
X11R5 with a library for X11R6 probably doesn't work (although the linking
|
|
||||||
won't give an error message, Vim will crash later).
|
|
||||||
|
|
||||||
==============================================================================
|
|
||||||
8. X11 selection mechanism *x11-selection*
|
|
||||||
|
|
||||||
If using X11, in either the GUI or an xterm with an X11-aware Vim, then Vim
|
|
||||||
provides varied access to the X11 selection and clipboard. These are accessed
|
|
||||||
by using the two selection registers "* and "+.
|
|
||||||
|
|
||||||
X11 provides two basic types of global store, selections and cut-buffers,
|
|
||||||
which differ in one important aspect: selections are "owned" by an
|
|
||||||
application, and disappear when that application (e.g., Vim) exits, thus
|
|
||||||
losing the data, whereas cut-buffers, are stored within the X-server itself
|
|
||||||
and remain until written over or the X-server exits (e.g., upon logging out).
|
|
||||||
|
|
||||||
The contents of selections are held by the originating application (e.g., upon
|
|
||||||
a copy), and only passed on to another application when that other application
|
|
||||||
asks for them (e.g., upon a paste).
|
|
||||||
|
|
||||||
The contents of cut-buffers are immediately written to, and are then
|
|
||||||
accessible directly from the X-server, without contacting the originating
|
|
||||||
application.
|
|
||||||
|
|
||||||
*quoteplus* *quote+*
|
|
||||||
There are three documented X selections: PRIMARY (which is expected to
|
|
||||||
represent the current visual selection - as in Vim's Visual mode), SECONDARY
|
|
||||||
(which is ill-defined) and CLIPBOARD (which is expected to be used for
|
|
||||||
cut, copy and paste operations).
|
|
||||||
|
|
||||||
Of these three, Vim uses PRIMARY when reading and writing the "* register
|
|
||||||
(hence when the X11 selections are available, Vim sets a default value for
|
|
||||||
|'clipboard'| of "autoselect"), and CLIPBOARD when reading and writing the "+
|
|
||||||
register. Vim does not access the SECONDARY selection.
|
|
||||||
|
|
||||||
Examples: (assuming the default option values)
|
|
||||||
- Select an URL in Visual mode in Vim. Go to a text field in Netscape and
|
|
||||||
click the middle mouse button. The selected text will be inserted
|
|
||||||
(hopefully!).
|
|
||||||
- Select some text in Netscape by dragging with the mouse. Go to Vim and
|
|
||||||
press the middle mouse button: The selected text is inserted.
|
|
||||||
- Select some text in Vim and do "+y. Go to Netscape, select some text in a
|
|
||||||
textfield by dragging with the mouse. Now use the right mouse button and
|
|
||||||
select "Paste" from the popup menu. The selected text is overwritten by the
|
|
||||||
text from Vim.
|
|
||||||
Note that the text in the "+ register remains available when making a Visual
|
|
||||||
selection, which makes other text available in the "* register. That allows
|
|
||||||
overwriting selected text.
|
|
||||||
*x11-cut-buffer*
|
|
||||||
There are, by default, 8 cut-buffers: CUT_BUFFER0 to CUT_BUFFER7. Vim only
|
|
||||||
uses CUT_BUFFER0, which is the one that xterm uses by default.
|
|
||||||
|
|
||||||
Whenever Vim is about to become unavailable (either via exiting or becoming
|
|
||||||
suspended), and thus unable to respond to another application's selection
|
|
||||||
request, it writes the contents of any owned selection to CUT_BUFFER0. If the
|
|
||||||
"+ CLIPBOARD selection is owned by Vim, then this is written in preference,
|
|
||||||
otherwise if the "* PRIMARY selection is owned by Vim, then that is written.
|
|
||||||
|
|
||||||
Similarly, when Vim tries to paste from "* or "+ (either explicitly, or, in
|
|
||||||
the case of the "* register, when the middle mouse button is clicked), if the
|
|
||||||
requested X selection is empty or unavailable, Vim reverts to reading the
|
|
||||||
current value of the CUT_BUFFER0.
|
|
||||||
|
|
||||||
Note that when text is copied to CUT_BUFFER0 in this way, the type of
|
|
||||||
selection (character, line or block) is always lost, even if it is a Vim which
|
|
||||||
later pastes it.
|
|
||||||
|
|
||||||
Xterm, by default, always writes visible selections to both PRIMARY and
|
|
||||||
CUT_BUFFER0. When it pastes, it uses PRIMARY if this is available, or else
|
|
||||||
falls back upon CUT_BUFFER0. For this reason, when cutting and pasting
|
|
||||||
between Vim and an xterm, you should use the "* register. Xterm doesn't use
|
|
||||||
CLIPBOARD, thus the "+ doesn't work with xterm.
|
|
||||||
|
|
||||||
Most newer applications will provide their current selection via PRIMARY ("*)
|
|
||||||
and use CLIPBOARD ("+) for cut/copy/paste operations. You thus have access to
|
|
||||||
both by choosing to use either of the "* or "+ registers.
|
|
||||||
|
|
||||||
|
|
||||||
vim:tw=78:sw=4:ts=8:ft=help:norl:
|
|
||||||
@@ -1,101 +0,0 @@
|
|||||||
*hangulin.txt* For Vim version 6.3. Last change: 2001 Sep 03
|
|
||||||
|
|
||||||
|
|
||||||
VIM REFERENCE MANUAL by Chi-Deok Hwang and Sung-Hyun Nam
|
|
||||||
|
|
||||||
Introduction *hangul*
|
|
||||||
------------
|
|
||||||
It is to input hangul, the Korean language, with VIM GUI version.
|
|
||||||
If you have a XIM program, you can use another |+xim| feature.
|
|
||||||
Basically, it is for whom has no XIM program.
|
|
||||||
|
|
||||||
Compile
|
|
||||||
-------
|
|
||||||
Next is a basic option. You can add any other configure option. >
|
|
||||||
|
|
||||||
./configure --with-x --enable-multibyte --enable-fontset --enable-hangulinput
|
|
||||||
|
|
||||||
And you should check the feature.h. If |+hangul_input| feature is enabled
|
|
||||||
by configure, you can select more options such as keyboard type, 2 bulsik
|
|
||||||
or 3 bulsik. You can find keywords like next in there. >
|
|
||||||
|
|
||||||
#define HANGUL_DEFAULT_KEYBOARD 2
|
|
||||||
#define ESC_CHG_TO_ENG_MODE
|
|
||||||
/* #define X_LOCALE */
|
|
||||||
/* #define SLOW_XSERVER */
|
|
||||||
|
|
||||||
Environment variables
|
|
||||||
---------------------
|
|
||||||
You should set LANG variable to Korean locale such as ko or ko_KR.euc.
|
|
||||||
If you set LC_ALL variable, it should be set to Korean locale also.
|
|
||||||
|
|
||||||
VIM resource
|
|
||||||
------------
|
|
||||||
You should add nexts to your global vimrc ($HOME/.vimrc). >
|
|
||||||
|
|
||||||
:set fileencoding=korea
|
|
||||||
|
|
||||||
Keyboard
|
|
||||||
--------
|
|
||||||
You can change keyboard type (2 bulsik or 3 bulsik) using VIM_KEYBOARD
|
|
||||||
or HANGUL_KEYBOARD_TYPE environment variables. For sh, just do (2 bulsik): >
|
|
||||||
|
|
||||||
export VIM_KEYBOARD="2"
|
|
||||||
or >
|
|
||||||
export HANGUL_KEYBOARD_TYPE="2"
|
|
||||||
|
|
||||||
If both are set, VIM_KEYBOARD has higher priority.
|
|
||||||
|
|
||||||
Hangul Fonts
|
|
||||||
------------
|
|
||||||
You can set text font using $HOME/.Xdefaults or $HOME/.gvimrc.
|
|
||||||
But to use Hangul, you should set 'guifontset' in your vimrc.
|
|
||||||
|
|
||||||
$HOME/.Xdefaults: >
|
|
||||||
Vim.font: english_font
|
|
||||||
|
|
||||||
! Nexts are for hangul menu with Athena
|
|
||||||
*international: True
|
|
||||||
Vim*fontSet: english_font,hangul_font
|
|
||||||
|
|
||||||
! Nexts are for hangul menu with Motif
|
|
||||||
*international: True
|
|
||||||
Vim*fontList: english_font;hangul_font:
|
|
||||||
|
|
||||||
$HOME/.gvimrc: >
|
|
||||||
set guifontset=english_font,hangul_font
|
|
||||||
|
|
||||||
attention! the , (comma) or ; (semicolon)
|
|
||||||
|
|
||||||
And there should be no ':set guifont'. If it exists, then Gvim ignores
|
|
||||||
':set guifontset'. It means VIM runs without fontset supporting.
|
|
||||||
So, you can see only English. Hangul does not be correctly displayed.
|
|
||||||
|
|
||||||
After 'fontset' feature is enabled, VIM does not allow using 'font'.
|
|
||||||
For example, if you use >
|
|
||||||
:set guifontset=eng_font,your_font
|
|
||||||
in your .gvimrc, then you should do for syntax >
|
|
||||||
:hi Comment guifg=Cyan font=another_eng_font,another_your_font
|
|
||||||
If you just do >
|
|
||||||
:hi Comment font=another_eng_font
|
|
||||||
then you can see a GOOD error message. Be careful!
|
|
||||||
|
|
||||||
hangul_font width should be twice than english_font width.
|
|
||||||
|
|
||||||
Unsupported Feature
|
|
||||||
-------------------
|
|
||||||
Johab font not yet supported. And I don't have any plan.
|
|
||||||
If you really want to use johab font, you can use the
|
|
||||||
hanguldraw.c in gau package.
|
|
||||||
|
|
||||||
Hanja input not yet supported. And I don't have any plan.
|
|
||||||
If you really want to input hanja, just use VIM with hanterm.
|
|
||||||
|
|
||||||
Bug or Comment
|
|
||||||
--------------
|
|
||||||
Send comments, patches and suggestions to:
|
|
||||||
|
|
||||||
Chi-Deok Hwang <[email protected]>
|
|
||||||
Nam SungHyun <[email protected]>
|
|
||||||
|
|
||||||
vim:tw=78:ts=8:ft=help:norl:
|
|
||||||
@@ -1,145 +0,0 @@
|
|||||||
*hebrew.txt* For Vim version 6.3. Last change: 2003 May 11
|
|
||||||
|
|
||||||
|
|
||||||
VIM REFERENCE MANUAL by Ron Aaron (and Avner Lottem)
|
|
||||||
|
|
||||||
|
|
||||||
Hebrew Language support (options & mapping) for Vim *hebrew*
|
|
||||||
|
|
||||||
The supporting 'rightleft' functionality was originally created by Avner
|
|
||||||
Lottem:
|
|
||||||
E-mail: [email protected]
|
|
||||||
Phone: +972-4-8307322
|
|
||||||
|
|
||||||
Ron Aaron <[email protected]> is currently helping support these features.
|
|
||||||
|
|
||||||
{Vi does not have any of these commands}
|
|
||||||
|
|
||||||
All this is only available when the |+rightleft| feature was enabled at
|
|
||||||
compile time.
|
|
||||||
|
|
||||||
|
|
||||||
Introduction
|
|
||||||
------------
|
|
||||||
Hebrew-specific options are 'hkmap', 'hkmapp' 'keymap'=hebrew and 'aleph'.
|
|
||||||
Hebrew-useful options are 'delcombine', 'allowrevins', 'revins', 'rightleft'
|
|
||||||
and 'rightleftcmd'.
|
|
||||||
|
|
||||||
The 'rightleft' mode reverses the display order, so characters are displayed
|
|
||||||
from right to left instead of the usual left to right. This is useful
|
|
||||||
primarily when editing Hebrew or other Middle-Eastern languages.
|
|
||||||
See |rileft.txt| for further details.
|
|
||||||
|
|
||||||
Details
|
|
||||||
--------------
|
|
||||||
+ Options:
|
|
||||||
+ 'rightleft' ('rl') sets window orientation to right-to-left. This means
|
|
||||||
that the logical text 'ABC' will be displayed as 'CBA', and will start
|
|
||||||
drawing at the right edge of the window, not the left edge.
|
|
||||||
+ 'hkmap' ('hk') sets keyboard mapping to Hebrew, in insert/replace modes.
|
|
||||||
+ 'aleph' ('al'), numeric, holds the decimal code of Aleph, for keyboard
|
|
||||||
mapping.
|
|
||||||
+ 'hkmapp' ('hkp') sets keyboard mapping to 'phonetic hebrew'
|
|
||||||
|
|
||||||
NOTE: these three ('hkmap', 'hkmapp' and 'aleph') are obsolete. You should
|
|
||||||
use ":set keymap=hebrewp" instead.
|
|
||||||
|
|
||||||
+ 'delcombine' ('deco'), boolean, if editing UTF-8 encoded Hebrew, allows
|
|
||||||
one to remove the niqud or te`amim by pressing 'x' on a character (with
|
|
||||||
associated niqud).
|
|
||||||
|
|
||||||
+ 'rightleftcmd' ('rlc') makes the command-prompt for searches show up on
|
|
||||||
the right side. It only takes effect if the window is 'rightleft'.
|
|
||||||
|
|
||||||
+ Encoding:
|
|
||||||
+ Under Unix, ISO 8859-8 encoding (Hebrew letters codes: 224-250).
|
|
||||||
+ Under MS DOS, PC encoding (Hebrew letters codes: 128-154).
|
|
||||||
These are defaults, that can be overridden using the 'aleph' option.
|
|
||||||
+ You should prefer using UTF8, as it supports the combining-characters
|
|
||||||
('deco' does nothing if UTF8 encoding is not active).
|
|
||||||
|
|
||||||
+ Vim arguments:
|
|
||||||
+ 'vim -H file' starts editing a Hebrew file, i.e. 'rightleft' and 'hkmap'
|
|
||||||
are set.
|
|
||||||
|
|
||||||
+ Keyboard:
|
|
||||||
+ The 'allowrevins' option enables the CTRL-_ command in Insert mode and
|
|
||||||
in Command-line mode.
|
|
||||||
|
|
||||||
+ CTRL-_ in insert/replace modes toggles 'revins' and 'hkmap' as follows:
|
|
||||||
|
|
||||||
When in rightleft window, 'revins' and 'nohkmap' are toggled, since
|
|
||||||
English will likely be inserted in this case.
|
|
||||||
|
|
||||||
When in norightleft window, 'revins' 'hkmap' are toggled, since Hebrew
|
|
||||||
will likely be inserted in this case.
|
|
||||||
|
|
||||||
CTRL-_ moves the cursor to the end of the typed text.
|
|
||||||
|
|
||||||
+ CTRL-_ in command mode only toggles keyboard mapping (see Bugs below).
|
|
||||||
This setting is independent of 'hkmap' option, which only applies to
|
|
||||||
insert/replace mode.
|
|
||||||
|
|
||||||
Note: On some keyboards, CTRL-_ is mapped to CTRL-?.
|
|
||||||
|
|
||||||
+ Keyboard mapping while 'hkmap' is set (standard Israeli keyboard):
|
|
||||||
|
|
||||||
q w e r t y u i o p
|
|
||||||
/ ' ק ר א ט ו ן ם פ
|
|
||||||
|
|
||||||
a s d f g h j k l ; '
|
|
||||||
ש ד ג כ ע י ח ל ך ף ,
|
|
||||||
|
|
||||||
z x c v b n m , . /
|
|
||||||
ז ס ב ה נ מ צ ת ץ .
|
|
||||||
|
|
||||||
This is also the keymap when 'keymap=hebrew' is set. The advantage of
|
|
||||||
'keymap' is that it works properly when using UTF8, e.g. it inserts the
|
|
||||||
correct characters; 'hkmap' does not. The 'keymap' keyboard can also
|
|
||||||
insert niqud and te`amim. To see what those mappings are,look at the
|
|
||||||
keymap file 'hebrew.vim' etc.
|
|
||||||
|
|
||||||
|
|
||||||
Typing backwards
|
|
||||||
|
|
||||||
If the 'revins' (reverse insert) option is set, inserting happens backwards.
|
|
||||||
This can be used to type Hebrew. When inserting characters the cursor is not
|
|
||||||
moved and the text moves rightwards. A <BS> deletes the character under the
|
|
||||||
cursor. CTRL-W and CTRL-U also work in the opposite direction. <BS>, CTRL-W
|
|
||||||
and CTRL-U do not stop at the start of insert or end of line, no matter how
|
|
||||||
the 'backspace' option is set.
|
|
||||||
|
|
||||||
There is no reverse replace mode (yet).
|
|
||||||
|
|
||||||
If the 'showmode' option is set, "-- REVERSE INSERT --" will be shown in the
|
|
||||||
status line when reverse Insert mode is active.
|
|
||||||
|
|
||||||
When the 'allowrevins' option is set, reverse Insert mode can be also entered
|
|
||||||
via CTRL-_, which has some extra functionality: First, keyboard mapping is
|
|
||||||
changed according to the window orientation -- if in a left-to-right window,
|
|
||||||
'revins' is used to enter Hebrew text, so the keyboard changes to Hebrew
|
|
||||||
('hkmap' is set); if in a right-to-left window, 'revins' is used to enter
|
|
||||||
English text, so the keyboard changes to English ('hkmap' is reset). Second,
|
|
||||||
when exiting 'revins' via CTRL-_, the cursor moves to the end of the typed
|
|
||||||
text (if possible).
|
|
||||||
|
|
||||||
|
|
||||||
Pasting when in a rightleft window
|
|
||||||
----------------------------------
|
|
||||||
When cutting text with the mouse and pasting it in a rightleft window
|
|
||||||
the text will be reversed, because the characters come from the cut buffer
|
|
||||||
from the left to the right, while inserted in the file from the right to
|
|
||||||
the left. In order to avoid it, toggle 'revins' (by typing CTRL-? or CTRL-_)
|
|
||||||
before pasting.
|
|
||||||
|
|
||||||
|
|
||||||
Hebrew characters and the 'isprint' variable
|
|
||||||
--------------------------------------------
|
|
||||||
Sometimes Hebrew character codes are in the non-printable range defined by
|
|
||||||
the 'isprint' variable. For example in the Linux console, the Hebrew font
|
|
||||||
encoding starts from 128, while the default 'isprint' variable is @,161-255.
|
|
||||||
The result is that all Hebrew characters are displayed as ~x. To solve this
|
|
||||||
problem, set isprint=@,128-255.
|
|
||||||
|
|
||||||
|
|
||||||
vim:tw=78:ts=8:ft=help:norl:
|
|
||||||
@@ -1,197 +0,0 @@
|
|||||||
*help.txt* For Vim version 6.3. Last change: 2004 May 04
|
|
||||||
|
|
||||||
VIM - main help file
|
|
||||||
k
|
|
||||||
Move around: Use the cursor keys, or "h" to go left, h l
|
|
||||||
"j" to go down, "k" to go up, "l" to go right. j
|
|
||||||
Close this window: Use ":q<Enter>".
|
|
||||||
Get out of Vim: Use ":qa!<Enter>" (careful, all changes are lost!).
|
|
||||||
|
|
||||||
Jump to a subject: Position the cursor on a tag between |bars| and hit CTRL-].
|
|
||||||
With the mouse: ":set mouse=a" to enable the mouse (in xterm or GUI).
|
|
||||||
Double-click the left mouse button on a tag between |bars|.
|
|
||||||
Jump back: Type CTRL-T or CTRL-O (repeat to go further back).
|
|
||||||
|
|
||||||
Get specific help: It is possible to go directly to whatever you want help
|
|
||||||
on, by giving an argument to the ":help" command |:help|.
|
|
||||||
It is possible to further specify the context:
|
|
||||||
*help-context*
|
|
||||||
WHAT PREPEND EXAMPLE ~
|
|
||||||
Normal mode commands (nothing) :help x
|
|
||||||
Visual mode commands v_ :help v_u
|
|
||||||
Insert mode commands i_ :help i_<Esc>
|
|
||||||
Command-line commands : :help :quit
|
|
||||||
Command-line editing c_ :help c_<Del>
|
|
||||||
Vim command arguments - :help -r
|
|
||||||
Options ' :help 'textwidth'
|
|
||||||
Search for help: Type ":help word", then hit CTRL-D to see matching
|
|
||||||
help entries for "word".
|
|
||||||
|
|
||||||
VIM stands for Vi IMproved. Most of VIM was made by Bram Moolenaar, but only
|
|
||||||
through the help of many others. See |credits|.
|
|
||||||
------------------------------------------------------------------------------
|
|
||||||
*doc-file-list* *Q_ct*
|
|
||||||
BASIC:
|
|
||||||
|quickref| Overview of the most common commands you will use
|
|
||||||
|tutor| 30 minutes training course for beginners
|
|
||||||
|copying| About copyrights
|
|
||||||
|iccf| Helping poor children in Uganda
|
|
||||||
|sponsor| Sponsor Vim development, become a registered Vim user
|
|
||||||
|www| Vim on the World Wide Web
|
|
||||||
|bugs| Where to send bug reports
|
|
||||||
|
|
||||||
USER MANUAL: These files explain how to accomplish an editing task.
|
|
||||||
|
|
||||||
|usr_toc.txt| Table Of Contents
|
|
||||||
|
|
||||||
Getting Started ~
|
|
||||||
|usr_01.txt| About the manuals
|
|
||||||
|usr_02.txt| The first steps in Vim
|
|
||||||
|usr_03.txt| Moving around
|
|
||||||
|usr_04.txt| Making small changes
|
|
||||||
|usr_05.txt| Set your settings
|
|
||||||
|usr_06.txt| Using syntax highlighting
|
|
||||||
|usr_07.txt| Editing more than one file
|
|
||||||
|usr_08.txt| Splitting windows
|
|
||||||
|usr_09.txt| Using the GUI
|
|
||||||
|usr_10.txt| Making big changes
|
|
||||||
|usr_11.txt| Recovering from a crash
|
|
||||||
|usr_12.txt| Clever tricks
|
|
||||||
|
|
||||||
Editing Effectively ~
|
|
||||||
|usr_20.txt| Typing command-line commands quickly
|
|
||||||
|usr_21.txt| Go away and come back
|
|
||||||
|usr_22.txt| Finding the file to edit
|
|
||||||
|usr_23.txt| Editing other files
|
|
||||||
|usr_24.txt| Inserting quickly
|
|
||||||
|usr_25.txt| Editing formatted text
|
|
||||||
|usr_26.txt| Repeating
|
|
||||||
|usr_27.txt| Search commands and patterns
|
|
||||||
|usr_28.txt| Folding
|
|
||||||
|usr_29.txt| Moving through programs
|
|
||||||
|usr_30.txt| Editing programs
|
|
||||||
|usr_31.txt| Exploiting the GUI
|
|
||||||
|
|
||||||
Tuning Vim ~
|
|
||||||
|usr_40.txt| Make new commands
|
|
||||||
|usr_41.txt| Write a Vim script
|
|
||||||
|usr_42.txt| Add new menus
|
|
||||||
|usr_43.txt| Using filetypes
|
|
||||||
|usr_44.txt| Your own syntax highlighted
|
|
||||||
|usr_45.txt| Select your language
|
|
||||||
|
|
||||||
Making Vim Run ~
|
|
||||||
|usr_90.txt| Installing Vim
|
|
||||||
|
|
||||||
|
|
||||||
REFERENCE MANUAL: These files explain every detail of Vim.
|
|
||||||
|
|
||||||
General subjects ~
|
|
||||||
|intro.txt| general introduction to Vim; notation used in help files
|
|
||||||
|help.txt| overview and quick reference (this file)
|
|
||||||
|index.txt| alphabetical index of all commands
|
|
||||||
|help-tags| all the tags you can jump to (index of tags)
|
|
||||||
|howto.txt| how to do the most common editing tasks
|
|
||||||
|tips.txt| various tips on using Vim
|
|
||||||
|message.txt| (error) messages and explanations
|
|
||||||
|quotes.txt| remarks from users of Vim
|
|
||||||
|todo.txt| known problems and desired extensions
|
|
||||||
|develop.txt| development of Vim
|
|
||||||
|uganda.txt| Vim distribution conditions and what to do with your money
|
|
||||||
|
|
||||||
Basic editing ~
|
|
||||||
|starting.txt| starting Vim, Vim command arguments, initialisation
|
|
||||||
|editing.txt| editing and writing files
|
|
||||||
|motion.txt| commands for moving around
|
|
||||||
|scroll.txt| scrolling the text in the window
|
|
||||||
|insert.txt| Insert and Replace mode
|
|
||||||
|change.txt| deleting and replacing text
|
|
||||||
|indent.txt| automatic indenting for C and other languages
|
|
||||||
|undo.txt| Undo and Redo
|
|
||||||
|repeat.txt| repeating commands, Vim scripts and debugging
|
|
||||||
|visual.txt| using the Visual mode (selecting a text area)
|
|
||||||
|various.txt| various remaining commands
|
|
||||||
|recover.txt| recovering from a crash
|
|
||||||
|
|
||||||
Advanced editing ~
|
|
||||||
|cmdline.txt| Command-line editing
|
|
||||||
|options.txt| description of all options
|
|
||||||
|pattern.txt| regexp patterns and search commands
|
|
||||||
|map.txt| key mapping and abbreviations
|
|
||||||
|tagsrch.txt| tags and special searches
|
|
||||||
|quickfix.txt| commands for a quick edit-compile-fix cycle
|
|
||||||
|windows.txt| commands for using multiple windows and buffers
|
|
||||||
|syntax.txt| syntax highlighting
|
|
||||||
|diff.txt| working with two or three versions of the same file
|
|
||||||
|autocmd.txt| automatically executing commands on an event
|
|
||||||
|filetype.txt| settings done specifically for a type of file
|
|
||||||
|eval.txt| expression evaluation, conditional commands
|
|
||||||
|fold.txt| hide (fold) ranges of lines
|
|
||||||
|
|
||||||
Special issues ~
|
|
||||||
|remote.txt| using Vim as a server or client
|
|
||||||
|term.txt| using different terminals and mice
|
|
||||||
|digraph.txt| list of available digraphs
|
|
||||||
|mbyte.txt| multi-byte text support
|
|
||||||
|mlang.txt| non-English language support
|
|
||||||
|arabic.txt| Arabic language support and editing
|
|
||||||
|farsi.txt| Farsi (Persian) editing
|
|
||||||
|hebrew.txt| Hebrew language support and editing
|
|
||||||
|russian.txt| Russian language support and editing
|
|
||||||
|hangulin.txt| Hangul (Korean) input mode
|
|
||||||
|rileft.txt| right-to-left editing mode
|
|
||||||
|
|
||||||
GUI ~
|
|
||||||
|gui.txt| Graphical User Interface (GUI)
|
|
||||||
|gui_w16.txt| Windows 3.1 GUI
|
|
||||||
|gui_w32.txt| Win32 GUI
|
|
||||||
|gui_x11.txt| X11 GUI
|
|
||||||
|
|
||||||
Interfaces ~
|
|
||||||
|if_cscop.txt| using cscope with Vim
|
|
||||||
|if_perl.txt| Perl interface
|
|
||||||
|if_pyth.txt| Python interface
|
|
||||||
|if_sniff.txt| SNiFF+ interface
|
|
||||||
|if_tcl.txt| Tcl interface
|
|
||||||
|if_ole.txt| OLE automation interface for Win32
|
|
||||||
|if_ruby.txt| Ruby interface
|
|
||||||
|debugger.txt| Interface with a debugger
|
|
||||||
|workshop.txt| Sun Visual Workshop interface
|
|
||||||
|netbeans.txt| NetBeans External Editor interface
|
|
||||||
|sign.txt| debugging signs
|
|
||||||
|
|
||||||
Versions ~
|
|
||||||
|vi_diff.txt| Main differences between Vim and Vi
|
|
||||||
|version4.txt| Differences between Vim version 3.0 and 4.x
|
|
||||||
|version5.txt| Differences between Vim version 4.6 and 5.x
|
|
||||||
|version6.txt| Differences between Vim version 5.7 and 6.x
|
|
||||||
*sys-file-list*
|
|
||||||
Remarks about specific systems ~
|
|
||||||
|os_390.txt| OS/390 Unix
|
|
||||||
|os_amiga.txt| Amiga
|
|
||||||
|os_beos.txt| BeOS and BeBox
|
|
||||||
|os_dos.txt| MS-DOS and MS-Windows NT/95 common items
|
|
||||||
|os_mac.txt| Macintosh
|
|
||||||
|os_mint.txt| Atari MiNT
|
|
||||||
|os_msdos.txt| MS-DOS (plain DOS and DOS box under Windows)
|
|
||||||
|os_os2.txt| OS/2
|
|
||||||
|os_qnx.txt| QNX
|
|
||||||
|os_risc.txt| RISC-OS
|
|
||||||
|os_unix.txt| Unix
|
|
||||||
|os_vms.txt| VMS
|
|
||||||
|os_win32.txt| MS-Windows 95/98/NT
|
|
||||||
*standard-plugin-list*
|
|
||||||
Standard plugins ~
|
|
||||||
|pi_netrw.txt| Reading and writing files over a network
|
|
||||||
|pi_gzip.txt| Reading and writing compressed files
|
|
||||||
|pi_expl.txt| File explorer
|
|
||||||
|
|
||||||
LOCAL ADDITIONS: *local-additions*
|
|
||||||
|
|
||||||
------------------------------------------------------------------------------
|
|
||||||
*bars* Bars example
|
|
||||||
|
|
||||||
Now that you've jumped here with CTRL-] or a double mouse click, you can use
|
|
||||||
CTRL-T, CTRL-O, g<RightMouse>, or <C-RightMouse> to go back to where you were.
|
|
||||||
------------------------------------------------------------------------------
|
|
||||||
vim:tw=78:fo=tcq2:isk=!-~,^*,^\|,^\":ts=8:ft=help:norl:
|
|
||||||
@@ -1,96 +0,0 @@
|
|||||||
*howto.txt* For Vim version 6.3. Last change: 2001 Sep 03
|
|
||||||
|
|
||||||
|
|
||||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
|
||||||
|
|
||||||
|
|
||||||
How to ... *howdoi* *how-do-i* *howto* *how-to*
|
|
||||||
|
|
||||||
|tutor| get started
|
|
||||||
|:quit| exit? I'm trapped, help me!
|
|
||||||
|initialization| initialize Vim
|
|
||||||
|vimrc-intro| write a Vim script file (vimrc)
|
|
||||||
|suspend| suspend Vim
|
|
||||||
|usr_11.txt| recover after a crash
|
|
||||||
|07.4| keep a backup of my file when writing over it
|
|
||||||
|
|
||||||
|usr_07.txt| edit files
|
|
||||||
|23.4| edit binary files
|
|
||||||
|usr_24.txt| insert text
|
|
||||||
|deleting| delete text
|
|
||||||
|usr_04.txt| change text
|
|
||||||
|04.5| copy and move text
|
|
||||||
|usr_25.txt| format text
|
|
||||||
|30.6| format comments
|
|
||||||
|30.2| indent C programs
|
|
||||||
|25.3| automatically set indent
|
|
||||||
|
|
||||||
|usr_26.txt| repeat commands
|
|
||||||
|02.5| undo and redo
|
|
||||||
|
|
||||||
|usr_03.txt| move around
|
|
||||||
|word-motions| word motions
|
|
||||||
|left-right-motions| left-right motions
|
|
||||||
|up-down-motions| up-down motions
|
|
||||||
|object-motions| text-object motions
|
|
||||||
|various-motions| various motions
|
|
||||||
|object-select| text-object selection
|
|
||||||
|'whichwrap'| move over line breaks
|
|
||||||
|'virtualedit'| move to where there is no text
|
|
||||||
|usr_27.txt| specify pattern for searches
|
|
||||||
|tags-and-searches| do tags and special searches
|
|
||||||
|29.4| search in include'd files used to find
|
|
||||||
variables, functions, or macros
|
|
||||||
|K| look up manual for the keyword under cursor
|
|
||||||
|
|
||||||
|03.7| scroll
|
|
||||||
|'sidescroll'| scroll horizontally/sideways
|
|
||||||
|'scrolloff'| set visible context lines
|
|
||||||
|
|
||||||
|mode-switching| change modes
|
|
||||||
|04.4| use Visual mode
|
|
||||||
|'insertmode'| start Vim in Insert mode
|
|
||||||
|
|
||||||
|40.1| map keys
|
|
||||||
|24.7| create abbreviations
|
|
||||||
|
|
||||||
|ins-expandtab| expand a tab to spaces in Insert mode
|
|
||||||
|i_CTRL-R| insert contents of a register in Insert mode
|
|
||||||
|24.3| complete words in Insert mode
|
|
||||||
|25.1| break a line before it gets too long
|
|
||||||
|
|
||||||
|20.1| do command-line editing
|
|
||||||
|20.3| do command-line completion
|
|
||||||
|'cmdheight'| increase the height of command-line
|
|
||||||
|10.3| specify command-line ranges
|
|
||||||
|40.3| specify commands to be executed automatically
|
|
||||||
before/after reading/writing entering/leaving a
|
|
||||||
buffer/window
|
|
||||||
|
|
||||||
|'autowrite'| write automatically
|
|
||||||
|30.1| speedup edit-compile-edit cycle or compile and fix
|
|
||||||
errors within Vim
|
|
||||||
|
|
||||||
|options| set options
|
|
||||||
|auto-setting| set options automatically
|
|
||||||
|term-dependent-settings| set options depending on terminal name
|
|
||||||
|save-settings| save settings
|
|
||||||
|:quote| comment my exrc/vimrc/gvimrc files
|
|
||||||
|'helpheight'| change the default help height
|
|
||||||
|'highlight'| set various highlighting modes
|
|
||||||
|'title'| set the window title
|
|
||||||
|'icon'| set window icon title
|
|
||||||
|'report'| avoid seeing the change messages on every line
|
|
||||||
|'shortmess'| avoid |hit-enter| prompts
|
|
||||||
|
|
||||||
|mouse-using| use mouse with Vim
|
|
||||||
|usr_08.txt| manage multiple windows and buffers
|
|
||||||
|gui.txt| use the gui
|
|
||||||
|
|
||||||
|You can't! (yet)| do dishes using Vim
|
|
||||||
|
|
||||||
|usr_06.txt| switch on syntax highlighting
|
|
||||||
|2html.vim| convert a colored file to HTML
|
|
||||||
|less| use Vim like less or more with syntax highlighting
|
|
||||||
|
|
||||||
vim:tw=78:ts=8:ft=help:norl:
|
|
||||||
@@ -1,474 +0,0 @@
|
|||||||
*if_cscop.txt* For Vim version 6.3. Last change: 2004 Jan 17
|
|
||||||
|
|
||||||
|
|
||||||
VIM REFERENCE MANUAL by Andy Kahn
|
|
||||||
|
|
||||||
*cscope* *Cscope*
|
|
||||||
This document explains how to use Vim's cscope interface.
|
|
||||||
|
|
||||||
Cscope is a tool like ctags, but think of it as ctags on steroids since it
|
|
||||||
does a lot more than what ctags provides. In Vim, jumping to a result from
|
|
||||||
a cscope query is just like jumping to any tag; it is saved on the tag stack
|
|
||||||
so that with the right keyboard mappings, you can jump back and forth between
|
|
||||||
functions as you normally would with |tags|.
|
|
||||||
|
|
||||||
1. Cscope introduction |cscope-intro|
|
|
||||||
2. Cscope related commands |cscope-commands|
|
|
||||||
3. Cscope options |cscope-options|
|
|
||||||
4. How to use cscope in Vim |cscope-howtouse|
|
|
||||||
5. Limitations |cscope-limitations|
|
|
||||||
6. Suggested usage |cscope-suggestions|
|
|
||||||
7. Availability & Information |cscope-info|
|
|
||||||
|
|
||||||
This is currently for Unix and Win32 only.
|
|
||||||
{Vi does not have any of these commands}
|
|
||||||
|
|
||||||
==============================================================================
|
|
||||||
1. Cscope introduction *cscope-intro*
|
|
||||||
|
|
||||||
The following text is taken from a version of the cscope man page:
|
|
||||||
|
|
||||||
-----
|
|
||||||
|
|
||||||
Cscope is an interactive screen-oriented tool that helps you:
|
|
||||||
|
|
||||||
Learn how a C program works without endless flipping through a thick
|
|
||||||
listing.
|
|
||||||
|
|
||||||
Locate the section of code to change to fix a bug without having to
|
|
||||||
learn the entire program.
|
|
||||||
|
|
||||||
Examine the effect of a proposed change such as adding a value to an
|
|
||||||
enum variable.
|
|
||||||
|
|
||||||
Verify that a change has been made in all source files such as adding
|
|
||||||
an argument to an existing function.
|
|
||||||
|
|
||||||
Rename a global variable in all source files.
|
|
||||||
|
|
||||||
Change a constant to a preprocessor symbol in selected lines of files.
|
|
||||||
|
|
||||||
It is designed to answer questions like:
|
|
||||||
Where is this symbol used?
|
|
||||||
Where is it defined?
|
|
||||||
Where did this variable get its value?
|
|
||||||
What is this global symbol's definition?
|
|
||||||
Where is this function in the source files?
|
|
||||||
What functions call this function?
|
|
||||||
What functions are called by this function?
|
|
||||||
Where does the message "out of space" come from?
|
|
||||||
Where is this source file in the directory structure?
|
|
||||||
What files include this header file?
|
|
||||||
|
|
||||||
Cscope answers these questions from a symbol database that it builds the
|
|
||||||
first time it is used on the source files. On a subsequent call, cscope
|
|
||||||
rebuilds the database only if a source file has changed or the list of
|
|
||||||
source files is different. When the database is rebuilt the data for the
|
|
||||||
unchanged files is copied from the old database, which makes rebuilding
|
|
||||||
much faster than the initial build.
|
|
||||||
|
|
||||||
-----
|
|
||||||
|
|
||||||
When cscope is normally invoked, you will get a full-screen selection
|
|
||||||
screen allowing you to make a query for one of the above questions.
|
|
||||||
However, once a match is found to your query and you have entered your
|
|
||||||
text editor to edit the source file containing match, you cannot simply
|
|
||||||
jump from tag to tag as you normally would with vi's Ctrl-] or :tag
|
|
||||||
command.
|
|
||||||
|
|
||||||
Vim's cscope interface is done by invoking cscope with its line-oriented
|
|
||||||
interface, and then parsing the output returned from a query. The end
|
|
||||||
result is that cscope query results become just like regular tags, so
|
|
||||||
you can jump to them just like you do with normal tags (Ctrl-] or :tag)
|
|
||||||
and then go back by popping off the tagstack with Ctrl-T. (Please note
|
|
||||||
however, that you don't actually jump to a cscope tag simply by doing
|
|
||||||
Ctrl-] or :tag without remapping these commands or setting an option.
|
|
||||||
See the remaining sections on how the cscope interface works and for
|
|
||||||
suggested use.)
|
|
||||||
|
|
||||||
|
|
||||||
==============================================================================
|
|
||||||
2. Cscope related commands *cscope-commands*
|
|
||||||
|
|
||||||
*:cscope* *:cs* *:scs* *:scscope* *E259* *E262* *E561* *E560*
|
|
||||||
All cscope commands are accessed through suboptions to the main cscope
|
|
||||||
command ":cscope". The shortest abbreviation is ":cs". The ":scscope"
|
|
||||||
command does the same and also splits the window (short: "scs").
|
|
||||||
|
|
||||||
The available subcommands are:
|
|
||||||
|
|
||||||
*E563* *E564* *E566* *E568* *E569* *E622* *E623*
|
|
||||||
*E625* *E626* *E609*
|
|
||||||
add : Add a new cscope database/connection.
|
|
||||||
|
|
||||||
USAGE :cs add {file|dir} [pre-path] [flags]
|
|
||||||
|
|
||||||
[pre-path] is the pathname used with the -P command to cscope.
|
|
||||||
|
|
||||||
[flags] are any additional flags you want to pass to cscope.
|
|
||||||
|
|
||||||
EXAMPLES >
|
|
||||||
:cscope add /usr/local/cdb/cscope.out
|
|
||||||
:cscope add /projects/vim/cscope.out /usr/local/vim
|
|
||||||
:cscope add cscope.out /usr/local/vim -C
|
|
||||||
<
|
|
||||||
*cscope-find* *cs-find*
|
|
||||||
*E565* *E567*
|
|
||||||
find : Query cscope. All cscope query options are available
|
|
||||||
except option #5 ("Change this grep pattern").
|
|
||||||
|
|
||||||
USAGE :cs find {querytype} {name}
|
|
||||||
|
|
||||||
{querytype} corresponds to the actual cscope line
|
|
||||||
interface numbers as well as default nvi commands:
|
|
||||||
|
|
||||||
0 or s: Find this C symbol
|
|
||||||
1 or g: Find this definition
|
|
||||||
2 or d: Find functions called by this function
|
|
||||||
3 or c: Find functions calling this function
|
|
||||||
4 or t: Find this text string
|
|
||||||
6 or e: Find this egrep pattern
|
|
||||||
7 or f: Find this file
|
|
||||||
8 or i: Find files #including this file
|
|
||||||
|
|
||||||
EXAMPLES >
|
|
||||||
:cscope find c vim_free
|
|
||||||
:cscope find 3 vim_free
|
|
||||||
<
|
|
||||||
These two examples perform the same query. >
|
|
||||||
|
|
||||||
:cscope find 0 DEFAULT_TERM
|
|
||||||
<
|
|
||||||
Executing this example on the source code for Vim 5.1 produces the
|
|
||||||
following output:
|
|
||||||
|
|
||||||
Cscope tag: DEFAULT_TERM
|
|
||||||
# line filename / context / line
|
|
||||||
1 1009 vim-5.1-gtk/src/term.c <<GLOBAL>>
|
|
||||||
#define DEFAULT_TERM (char_u *)"amiga"
|
|
||||||
2 1013 vim-5.1-gtk/src/term.c <<GLOBAL>>
|
|
||||||
#define DEFAULT_TERM (char_u *)"win32"
|
|
||||||
3 1017 vim-5.1-gtk/src/term.c <<GLOBAL>>
|
|
||||||
#define DEFAULT_TERM (char_u *)"pcterm"
|
|
||||||
4 1021 vim-5.1-gtk/src/term.c <<GLOBAL>>
|
|
||||||
#define DEFAULT_TERM (char_u *)"ansi"
|
|
||||||
5 1025 vim-5.1-gtk/src/term.c <<GLOBAL>>
|
|
||||||
#define DEFAULT_TERM (char_u *)"vt52"
|
|
||||||
6 1029 vim-5.1-gtk/src/term.c <<GLOBAL>>
|
|
||||||
#define DEFAULT_TERM (char_u *)"os2ansi"
|
|
||||||
7 1033 vim-5.1-gtk/src/term.c <<GLOBAL>>
|
|
||||||
#define DEFAULT_TERM (char_u *)"ansi"
|
|
||||||
8 1037 vim-5.1-gtk/src/term.c <<GLOBAL>>
|
|
||||||
# undef DEFAULT_TERM
|
|
||||||
9 1038 vim-5.1-gtk/src/term.c <<GLOBAL>>
|
|
||||||
#define DEFAULT_TERM (char_u *)"beos-ansi"
|
|
||||||
10 1042 vim-5.1-gtk/src/term.c <<GLOBAL>>
|
|
||||||
#define DEFAULT_TERM (char_u *)"mac-ansi"
|
|
||||||
11 1335 vim-5.1-gtk/src/term.c <<set_termname>>
|
|
||||||
term = DEFAULT_TERM;
|
|
||||||
12 1459 vim-5.1-gtk/src/term.c <<set_termname>>
|
|
||||||
if (STRCMP(term, DEFAULT_TERM))
|
|
||||||
13 1826 vim-5.1-gtk/src/term.c <<termcapinit>>
|
|
||||||
term = DEFAULT_TERM;
|
|
||||||
14 1833 vim-5.1-gtk/src/term.c <<termcapinit>>
|
|
||||||
term = DEFAULT_TERM;
|
|
||||||
15 3635 vim-5.1-gtk/src/term.c <<update_tcap>>
|
|
||||||
p = find_builtin_term(DEFAULT_TERM);
|
|
||||||
Enter nr of choice (<CR> to abort):
|
|
||||||
|
|
||||||
The output shows several pieces of information:
|
|
||||||
1. The tag number (there are 15 in this example).
|
|
||||||
2. The line number where the tag occurs.
|
|
||||||
3. The filename where the tag occurs.
|
|
||||||
4. The context of the tag (e.g., global, or the function name).
|
|
||||||
5. The line from the file itself.
|
|
||||||
|
|
||||||
help : Show a brief synopsis.
|
|
||||||
|
|
||||||
USAGE :cs help
|
|
||||||
|
|
||||||
*E260* *E261*
|
|
||||||
kill : Kill a cscope connection (or kill all cscope connections).
|
|
||||||
|
|
||||||
USAGE :cs kill {num|partial_name}
|
|
||||||
|
|
||||||
To kill a cscope connection, the connection number or a partial
|
|
||||||
name must be specified. The partial name is simply any part of
|
|
||||||
the pathname of the cscope database. Kill a cscope connection
|
|
||||||
using the partial name with caution!
|
|
||||||
|
|
||||||
If the specified connection number is -1, then _ALL_ cscope
|
|
||||||
connections will be killed.
|
|
||||||
|
|
||||||
reset : Reinit all cscope connections.
|
|
||||||
|
|
||||||
USAGE :cs reset
|
|
||||||
|
|
||||||
show : Show cscope connections.
|
|
||||||
|
|
||||||
USAGE :cs show
|
|
||||||
|
|
||||||
*:cstag* *E257* *E562*
|
|
||||||
If you use cscope as well as ctags, |:cstag| allows you to search one or
|
|
||||||
the other before making a jump. For example, you can choose to first
|
|
||||||
search your cscope database(s) for a match, and if one is not found, then
|
|
||||||
your tags file(s) will be searched. The order in which this happens
|
|
||||||
is determined by the value of |csto|. See |cscope-options| for more
|
|
||||||
details.
|
|
||||||
|
|
||||||
|:cstag| performs the equivalent of ":cs find g" on the identifier when
|
|
||||||
searching through the cscope database(s).
|
|
||||||
|
|
||||||
|:cstag| performs the equivalent of |:tjump| on the identifier when searching
|
|
||||||
through your tags file(s).
|
|
||||||
|
|
||||||
|
|
||||||
==============================================================================
|
|
||||||
3. Cscope options *cscope-options*
|
|
||||||
|
|
||||||
Use the |:set| command to set all cscope options. Ideally, you would do
|
|
||||||
this in one of your startup files (e.g., .vimrc). Some cscope related
|
|
||||||
variables are only valid within |.vimrc|. Setting them after vim has
|
|
||||||
started will have no effect!
|
|
||||||
|
|
||||||
*cscopeprg* *csprg*
|
|
||||||
'cscopeprg' specifies the command to execute cscope. The default is
|
|
||||||
"cscope". For example: >
|
|
||||||
:set csprg=/usr/local/bin/cscope
|
|
||||||
<
|
|
||||||
*cscopequickfix* *csqf* *E469*
|
|
||||||
{not available when compiled without the |+quickfix| feature}
|
|
||||||
'cscopequickfix' specifies whether to use quickfix window to show cscope
|
|
||||||
results. This is a list of comma-separated values. Each item consists of
|
|
||||||
|cscope-find| command (s, g, d, c, t, e, f or i) and flag (+, - or 0).
|
|
||||||
'+' indicates that results must be appended to quickfix window,
|
|
||||||
'-' implies previous results clearance, '0' or command absence - don't use
|
|
||||||
quickfix. Search is performed from start until first command occurrence.
|
|
||||||
The default value is "" (don't use quickfix anyway). The following value
|
|
||||||
seems to be useful: "s-,c-,d-,i-,t-,e-".
|
|
||||||
|
|
||||||
*cscopetag* *cst*
|
|
||||||
If 'cscopetag' set, the commands ":tag" and CTRL-] as well as "vim -t" will
|
|
||||||
always use |:cstag| instead of the default :tag behavior. Effectively, by
|
|
||||||
setting 'cst', you will always search your cscope databases as well as your
|
|
||||||
tag files. The default is off. Examples: >
|
|
||||||
:set cst
|
|
||||||
:set nocst
|
|
||||||
<
|
|
||||||
*cscopetagorder* *csto*
|
|
||||||
The value of 'csto' determines the order in which |:cstag| performs a search.
|
|
||||||
If 'csto' is set to zero, cscope database(s) are searched first, followed
|
|
||||||
by tag file(s) if cscope did not return any matches. If 'csto' is set to
|
|
||||||
one, tag file(s) are searched before cscope database(s). The default is zero.
|
|
||||||
Examples: >
|
|
||||||
:set csto=0
|
|
||||||
:set csto=1
|
|
||||||
<
|
|
||||||
*cscopeverbose* *csverb*
|
|
||||||
If 'cscopeverbose' is not set (the default), messages will not be printed
|
|
||||||
indicating success or failure when adding a cscope database. Ideally, you
|
|
||||||
should reset this option in your |.vimrc| before adding any cscope databases,
|
|
||||||
and after adding them, set it. From then on, when you add more databases
|
|
||||||
within Vim, you will get a (hopefully) useful message should the database fail
|
|
||||||
to be added. Examples: >
|
|
||||||
:set csverb
|
|
||||||
:set nocsverb
|
|
||||||
<
|
|
||||||
*cscopepathcomp* *cspc*
|
|
||||||
The value of 'cspc' determines how many components of a file's path to
|
|
||||||
display. With the default value of zero the entire path will be displayed.
|
|
||||||
The value one will display only the filename with no path. Other values
|
|
||||||
display that many components. For example: >
|
|
||||||
:set cspc=3
|
|
||||||
will display the last 3 components of the file's path, including the file
|
|
||||||
name itself.
|
|
||||||
|
|
||||||
==============================================================================
|
|
||||||
4. How to use cscope in Vim *cscope-howtouse*
|
|
||||||
|
|
||||||
The first thing you need to do is to build a cscope database for your
|
|
||||||
source files. For the most basic case, simply do "cscope -b". Please
|
|
||||||
refer to the cscope man page for more details.
|
|
||||||
|
|
||||||
Assuming you have a cscope database, you need to "add" the database to Vim.
|
|
||||||
This establishes a cscope "connection" and makes it available for Vim to use.
|
|
||||||
You can do this in your .vimrc file, or you can do it manually after starting
|
|
||||||
vim. For example, to add the cscope database "cscope.out", you would do:
|
|
||||||
|
|
||||||
:cs add cscope.out
|
|
||||||
|
|
||||||
You can double-check the result of this by executing ":cs show". This will
|
|
||||||
produce output which looks like this:
|
|
||||||
|
|
||||||
# pid database name prepend path
|
|
||||||
0 28806 cscope.out <none>
|
|
||||||
|
|
||||||
Note:
|
|
||||||
Because of the Microsoft RTL limitations, Win32 version shows 0 instead
|
|
||||||
of the real pid.
|
|
||||||
|
|
||||||
Once a cscope connection is established, you can make queries to cscope and
|
|
||||||
the results will be printed to you. Queries are made using the command
|
|
||||||
":cs find". For example:
|
|
||||||
|
|
||||||
:cs find g ALIGN_SIZE
|
|
||||||
|
|
||||||
This can get a little cumbersome since one ends up doing a significant
|
|
||||||
amount of typing. Fortunately, there are ways around this by mapping
|
|
||||||
shortcut keys. See |cscope-suggestions| for suggested usage.
|
|
||||||
|
|
||||||
If the results return only one match, you will automatically be taken to it.
|
|
||||||
If there is more than one match, you will be given a selection screen to pick
|
|
||||||
the match you want to go to. After you have jumped to the new location,
|
|
||||||
simply hit Ctrl-T to get back to the previous one.
|
|
||||||
|
|
||||||
|
|
||||||
==============================================================================
|
|
||||||
5. Limitations *cscope-limitations*
|
|
||||||
|
|
||||||
Cscope support for Vim is only available on systems that support these four
|
|
||||||
system calls: fork(), pipe(), execl(), waitpid(). This means it is mostly
|
|
||||||
limited to Unix systems.
|
|
||||||
|
|
||||||
Additionally Cscope support works for Win32. For more information and a
|
|
||||||
cscope version for Win32 see:
|
|
||||||
|
|
||||||
http://iamphet.nm.ru/cscope/index.html
|
|
||||||
|
|
||||||
There are a couple of hard-coded limitations:
|
|
||||||
|
|
||||||
1. The maximum number of cscope connections allowed is 8. Do you
|
|
||||||
really need more?
|
|
||||||
|
|
||||||
2. Doing a |:tjump| when |:cstag| searches the tag files is not
|
|
||||||
configurable (e.g., you can't do a tselect instead).
|
|
||||||
|
|
||||||
==============================================================================
|
|
||||||
6. Suggested usage *cscope-suggestions*
|
|
||||||
|
|
||||||
Put these entries in your .vimrc (adjust the pathname accordingly to your
|
|
||||||
setup): >
|
|
||||||
|
|
||||||
if has("cscope")
|
|
||||||
set csprg=/usr/local/bin/cscope
|
|
||||||
set csto=0
|
|
||||||
set cst
|
|
||||||
set nocsverb
|
|
||||||
" add any database in current directory
|
|
||||||
if filereadable("cscope.out")
|
|
||||||
cs add cscope.out
|
|
||||||
" else add database pointed to by environment
|
|
||||||
elseif $CSCOPE_DB != ""
|
|
||||||
cs add $CSCOPE_DB
|
|
||||||
endif
|
|
||||||
set csverb
|
|
||||||
endif
|
|
||||||
|
|
||||||
By setting 'cscopetag', we have effectively replaced all instances of the :tag
|
|
||||||
command with :cstag. This includes :tag, Ctrl-], and "vim -t". In doing
|
|
||||||
this, the regular tag command not only searches your ctags generated tag
|
|
||||||
files, but your cscope databases as well.
|
|
||||||
|
|
||||||
Some users may want to keep the regular tag behavior and have a different
|
|
||||||
shortcut to access :cstag. For example, one could map Ctrl-_ (underscore)
|
|
||||||
to :cstag with the following command: >
|
|
||||||
|
|
||||||
map <C-_> :cstag <C-R>=expand("<cword>")<CR><CR>
|
|
||||||
|
|
||||||
A couple of very commonly used cscope queries (using ":cs find") is to
|
|
||||||
find all functions calling a certain function and to find all occurrences
|
|
||||||
of a particular C symbol. To do this, you can use these mappings as an
|
|
||||||
example: >
|
|
||||||
|
|
||||||
map g<C-]> :cs find 3 <C-R>=expand("<cword>")<CR><CR>
|
|
||||||
map g<C-\> :cs find 0 <C-R>=expand("<cword>")<CR><CR>
|
|
||||||
|
|
||||||
These mappings for Ctrl-] (right bracket) and Ctrl-\ (backslash) allow you to
|
|
||||||
place your cursor over the function name or C symbol and quickly query cscope
|
|
||||||
for any matches.
|
|
||||||
|
|
||||||
Or you may use the following scheme, inspired by Vim/Cscope tutorial from
|
|
||||||
Cscope Home Page (http://cscope.sourceforge.net/): >
|
|
||||||
|
|
||||||
nmap <C-_>s :cs find s <C-R>=expand("<cword>")<CR><CR>
|
|
||||||
nmap <C-_>g :cs find g <C-R>=expand("<cword>")<CR><CR>
|
|
||||||
nmap <C-_>c :cs find c <C-R>=expand("<cword>")<CR><CR>
|
|
||||||
nmap <C-_>t :cs find t <C-R>=expand("<cword>")<CR><CR>
|
|
||||||
nmap <C-_>e :cs find e <C-R>=expand("<cword>")<CR><CR>
|
|
||||||
nmap <C-_>f :cs find f <C-R>=expand("<cfile>")<CR><CR>
|
|
||||||
nmap <C-_>i :cs find i ^<C-R>=expand("<cfile>")<CR>$<CR>
|
|
||||||
nmap <C-_>d :cs find d <C-R>=expand("<cword>")<CR><CR>
|
|
||||||
|
|
||||||
" Using 'CTRL-spacebar' then a search type makes the vim window
|
|
||||||
" split horizontally, with search result displayed in
|
|
||||||
" the new window.
|
|
||||||
|
|
||||||
nmap <C-Space>s :scs find s <C-R>=expand("<cword>")<CR><CR>
|
|
||||||
nmap <C-Space>g :scs find g <C-R>=expand("<cword>")<CR><CR>
|
|
||||||
nmap <C-Space>c :scs find c <C-R>=expand("<cword>")<CR><CR>
|
|
||||||
nmap <C-Space>t :scs find t <C-R>=expand("<cword>")<CR><CR>
|
|
||||||
nmap <C-Space>e :scs find e <C-R>=expand("<cword>")<CR><CR>
|
|
||||||
nmap <C-Space>f :scs find f <C-R>=expand("<cfile>")<CR><CR>
|
|
||||||
nmap <C-Space>i :scs find i ^<C-R>=expand("<cfile>")<CR>$<CR>
|
|
||||||
nmap <C-Space>d :scs find d <C-R>=expand("<cword>")<CR><CR>
|
|
||||||
|
|
||||||
" Hitting CTRL-space *twice* before the search type does a vertical
|
|
||||||
" split instead of a horizontal one
|
|
||||||
|
|
||||||
nmap <C-Space><C-Space>s
|
|
||||||
\:vert scs find s <C-R>=expand("<cword>")<CR><CR>
|
|
||||||
nmap <C-Space><C-Space>g
|
|
||||||
\:vert scs find g <C-R>=expand("<cword>")<CR><CR>
|
|
||||||
nmap <C-Space><C-Space>c
|
|
||||||
\:vert scs find c <C-R>=expand("<cword>")<CR><CR>
|
|
||||||
nmap <C-Space><C-Space>t
|
|
||||||
\:vert scs find t <C-R>=expand("<cword>")<CR><CR>
|
|
||||||
nmap <C-Space><C-Space>e
|
|
||||||
\:vert scs find e <C-R>=expand("<cword>")<CR><CR>
|
|
||||||
nmap <C-Space><C-Space>i
|
|
||||||
\:vert scs find i ^<C-R>=expand("<cfile>")<CR>$<CR>
|
|
||||||
nmap <C-Space><C-Space>d
|
|
||||||
\:vert scs find d <C-R>=expand("<cword>")<CR><CR>
|
|
||||||
|
|
||||||
==============================================================================
|
|
||||||
7. Cscope availability and information *cscope-info*
|
|
||||||
|
|
||||||
If you do not already have cscope (it did not come with your compiler
|
|
||||||
license or OS distribution), then you can download it for free from:
|
|
||||||
http://cscope.sourceforge.net/
|
|
||||||
This is released by SCO under the BSD license.
|
|
||||||
|
|
||||||
If you want a newer version of cscope, you will probably have to buy it.
|
|
||||||
According to the (old) nvi documentation:
|
|
||||||
|
|
||||||
You can buy version 13.3 source with an unrestricted license
|
|
||||||
for $400 from AT&T Software Solutions by calling +1-800-462-8146.
|
|
||||||
|
|
||||||
Also you can download cscope 13.x and mlcscope 14.x (multi-lingual cscope
|
|
||||||
which supports C, C++, Java, lex, yacc, breakpoint listing, Ingres, and SDL)
|
|
||||||
from World-Wide Exptools Open Source packages page:
|
|
||||||
http://www.bell-labs.com/project/wwexptools/packages.html
|
|
||||||
|
|
||||||
In Solaris 2.x, if you have the C compiler license, you will also have
|
|
||||||
cscope. Both are usually located under /opt/SUNWspro/bin
|
|
||||||
|
|
||||||
SGI developers can also get it. Search for Cscope on this page:
|
|
||||||
http://freeware.sgi.com/index-by-alpha.html
|
|
||||||
https://toolbox.sgi.com/toolbox/utilities/cscope/
|
|
||||||
The second one is for those who have a password for the SGI toolbox.
|
|
||||||
|
|
||||||
There is source to an older version of a cscope clone (called "cs") available
|
|
||||||
on the net. Due to various reasons, this is not supported with Vim.
|
|
||||||
|
|
||||||
The cscope interface/support for Vim was originally written by
|
|
||||||
Andy Kahn <[email protected]>. The original structure (as well as a tiny
|
|
||||||
bit of code) was adapted from the cscope interface in nvi. Please report
|
|
||||||
any problems, suggestions, patches, et al., you have for the usage of
|
|
||||||
cscope within Vim to him.
|
|
||||||
*cscope-win32*
|
|
||||||
For a cscope version for Win32 see: http://iamphet.nm.ru/cscope/index.html
|
|
||||||
|
|
||||||
Win32 support was added by Sergey Khorev <[email protected]>. Contact him
|
|
||||||
if you have Win32-specific issues.
|
|
||||||
|
|
||||||
vim:tw=78:ts=8:ft=help:norl:
|
|
||||||
@@ -1,162 +0,0 @@
|
|||||||
*if_ole.txt* For Vim version 6.3. Last change: 2003 Jun 19
|
|
||||||
|
|
||||||
|
|
||||||
VIM REFERENCE MANUAL by Paul Moore
|
|
||||||
|
|
||||||
|
|
||||||
The OLE Interface to Vim *ole-interface*
|
|
||||||
|
|
||||||
1. Activation |ole-activation|
|
|
||||||
2. Methods |ole-methods|
|
|
||||||
3. The "normal" command |ole-normal|
|
|
||||||
4. Registration |ole-registration|
|
|
||||||
5. MS Visual Studio integration |MSVisualStudio|
|
|
||||||
|
|
||||||
{Vi does not have any of these commands}
|
|
||||||
|
|
||||||
OLE is only available when compiled with the |+ole| feature. See
|
|
||||||
src/if_ole.INSTALL.
|
|
||||||
An alternative is using the client-server communication |clientserver|.
|
|
||||||
|
|
||||||
==============================================================================
|
|
||||||
1. Activation *ole-activation*
|
|
||||||
|
|
||||||
Vim acts as an OLE automation server, accessible from any automation client,
|
|
||||||
for example, Visual Basic, Python, or Perl. The Vim application "name" (its
|
|
||||||
"ProgID", in OLE terminology) is "Vim.Application".
|
|
||||||
|
|
||||||
Hence, in order to start a Vim instance (or connect to an already running
|
|
||||||
instance), code similar to the following should be used:
|
|
||||||
|
|
||||||
[Visual Basic] >
|
|
||||||
Dim Vim As Object
|
|
||||||
Set Vim = CreateObject("Vim.Application")
|
|
||||||
|
|
||||||
[Python] >
|
|
||||||
from win32com.client.dynamic import Dispatch
|
|
||||||
vim = Dispatch('Vim.Application')
|
|
||||||
|
|
||||||
[Perl] >
|
|
||||||
use Win32::OLE;
|
|
||||||
$vim = new Win32::OLE 'Vim.Application';
|
|
||||||
|
|
||||||
Vim does not support acting as a "hidden" OLE server, like some other OLE
|
|
||||||
Automation servers. When a client starts up an instance of Vim, that instance
|
|
||||||
is immediately visible. Simply closing the OLE connection to the Vim instance
|
|
||||||
is not enough to shut down the Vim instance - it is necessary to explicitly
|
|
||||||
execute a quit command (for example, :qa!, :wqa).
|
|
||||||
|
|
||||||
==============================================================================
|
|
||||||
2. Methods *ole-methods*
|
|
||||||
|
|
||||||
Vim exposes four methods for use by clients.
|
|
||||||
|
|
||||||
*ole-sendkeys*
|
|
||||||
SendKeys(keys) Execute a series of keys.
|
|
||||||
|
|
||||||
This method takes a single parameter, which is a string of keystrokes. These
|
|
||||||
keystrokes are executed exactly as if they had been types in at the keyboard.
|
|
||||||
Special keys can be given using their <..> names, as for the right hand side
|
|
||||||
of a mapping. Note: Execution of the Ex "normal" command is not supported -
|
|
||||||
see below |ole-normal|.
|
|
||||||
|
|
||||||
Examples (Visual Basic syntax) >
|
|
||||||
Vim.SendKeys "ihello<Esc>"
|
|
||||||
Vim.SendKeys "ma1GV4jy`a"
|
|
||||||
|
|
||||||
These examples assume that Vim starts in Normal mode. To force Normal mode,
|
|
||||||
start the key sequence with CTRL-\ CTRL-N as in >
|
|
||||||
|
|
||||||
Vim.SendKeys "<C-\><C-N>ihello<Esc>"
|
|
||||||
|
|
||||||
CTRL-\ CTRL-N returns Vim to Normal mode, when in Insert or Command-line mode.
|
|
||||||
Note that this doesn't work halfway a Vim command
|
|
||||||
|
|
||||||
*ole-eval*
|
|
||||||
Eval(expr) Evaluate an expression.
|
|
||||||
|
|
||||||
This method takes a single parameter, which is an expression in Vim's normal
|
|
||||||
format (see |expression|). It returns a string, which is the result of
|
|
||||||
evaluating the expression.
|
|
||||||
|
|
||||||
Examples (Visual Basic syntax) >
|
|
||||||
Line20 = Vim.Eval("getline(20)")
|
|
||||||
Twelve = Vim.Eval("6 + 6") ' Note this is a STRING
|
|
||||||
Font = Vim.Eval("&guifont")
|
|
||||||
<
|
|
||||||
*ole-setforeground*
|
|
||||||
SetForeground() Make the Vim window come to the foreground
|
|
||||||
|
|
||||||
This method takes no arguments. No value is returned.
|
|
||||||
|
|
||||||
Example (Visual Basic syntax) >
|
|
||||||
Vim.SetForeground
|
|
||||||
<
|
|
||||||
|
|
||||||
*ole-gethwnd*
|
|
||||||
GetHwnd() Return the handle of the Vim window.
|
|
||||||
|
|
||||||
This method takes no arguments. It returns the hwnd of the main Vimwindow.
|
|
||||||
You can use this if you are writing something which needs to manipulate the
|
|
||||||
Vim window, or to track it in the z-order, etc.
|
|
||||||
|
|
||||||
Example (Visual Basic syntax) >
|
|
||||||
Vim_Hwnd = Vim.GetHwnd
|
|
||||||
<
|
|
||||||
|
|
||||||
==============================================================================
|
|
||||||
3. The "normal" command *ole-normal*
|
|
||||||
|
|
||||||
Due to the way Vim processes OLE Automation commands, combined with the method
|
|
||||||
of implementation of the ex command :normal, it is not possible to execute the
|
|
||||||
:normal command via OLE automation. Any attempt to do so will fail, probably
|
|
||||||
harmlessly, although possibly in unpredictable ways.
|
|
||||||
|
|
||||||
There is currently no practical way to trap this situation, and users must
|
|
||||||
simply be aware of the limitation.
|
|
||||||
==============================================================================
|
|
||||||
4. Registration *ole-registration* *E243*
|
|
||||||
|
|
||||||
Before Vim will act as an OLE server, it must be registered in the system
|
|
||||||
registry. In order to do this, Vim should be run with a single parameter of
|
|
||||||
"-register".
|
|
||||||
*-register* >
|
|
||||||
gvim -register
|
|
||||||
|
|
||||||
If gvim with OLE support is run and notices that no Vim OLE server has been
|
|
||||||
registered, it will present a dialog and offers you the choice to register by
|
|
||||||
clicking "Yes".
|
|
||||||
|
|
||||||
In some situations registering is not possible. This happens when the
|
|
||||||
registry is not writable. If you run into this problem you need to run gvim
|
|
||||||
as "Administrator".
|
|
||||||
|
|
||||||
Once vim is registered, the application path is stored in the registry. Before
|
|
||||||
moving, deleting, or upgrading Vim, the registry entries should be removed
|
|
||||||
using the "-unregister" switch.
|
|
||||||
*-unregister* >
|
|
||||||
gvim -unregister
|
|
||||||
|
|
||||||
The OLE mechanism will use the first registered Vim it finds. If a Vim is
|
|
||||||
already running, this one will be used. If you want to have (several) Vim
|
|
||||||
sessions open that should not react to OLE commands, use the non-OLE version,
|
|
||||||
and put it in a different directory. The OLE version should then be put in a
|
|
||||||
directory that is not in your normal path, so that typing "gvim" will start
|
|
||||||
the non-OLE version.
|
|
||||||
|
|
||||||
*-silent*
|
|
||||||
To avoid the message box that pops up to report the result, prepend "-silent":
|
|
||||||
>
|
|
||||||
gvim -silent -register
|
|
||||||
gvim -silent -unregister
|
|
||||||
|
|
||||||
==============================================================================
|
|
||||||
5. MS Visual Studio integration *MSVisualStudio* *VisVim*
|
|
||||||
|
|
||||||
The OLE version can be used to run Vim as the editor in Microsoft Visual
|
|
||||||
Studio. This is called "VisVim". It is included in the archive that contains
|
|
||||||
the OLE version. The documentation can be found in the runtime directory, the
|
|
||||||
README_VisVim.txt file.
|
|
||||||
|
|
||||||
==============================================================================
|
|
||||||
vim:tw=78:ts=8:ft=help:norl:
|
|
||||||
@@ -1,258 +0,0 @@
|
|||||||
*if_perl.txt* For Vim version 6.3. Last change: 2004 May 01
|
|
||||||
|
|
||||||
|
|
||||||
VIM REFERENCE MANUAL by Sven Verdoolaege
|
|
||||||
and Matt Gerassimof
|
|
||||||
|
|
||||||
Perl and Vim *perl* *Perl*
|
|
||||||
|
|
||||||
1. Editing Perl files |perl-editing|
|
|
||||||
2. Compiling VIM with Perl interface |perl-compiling|
|
|
||||||
3. Using the Perl interface |perl-using|
|
|
||||||
|
|
||||||
{Vi does not have any of these commands}
|
|
||||||
|
|
||||||
The Perl interface only works when Vim was compiled with the |+perl| feature.
|
|
||||||
|
|
||||||
==============================================================================
|
|
||||||
1. Editing Perl files *perl-editing*
|
|
||||||
|
|
||||||
Vim syntax highlighting supports Perl and POD files. Vim assumes a file is
|
|
||||||
Perl code if the filename has a .pl or .pm suffix. Vim also examines the first
|
|
||||||
line of a file, regardless of the filename suffix, to check if a file is a
|
|
||||||
Perl script (see scripts.vim in Vim's syntax directory). Vim assumes a file
|
|
||||||
is POD text if the filename has a .POD suffix.
|
|
||||||
|
|
||||||
To use tags with Perl, you need a recent version of Exuberant ctags. Look
|
|
||||||
here:
|
|
||||||
http://ctags.sourceforge.net
|
|
||||||
|
|
||||||
Alternatively, you can use the Perl script pltags.pl, which is shipped with
|
|
||||||
Vim in the $VIMRUNTIME/tools directory. This script has currently more
|
|
||||||
features than Exuberant ctags' Perl support.
|
|
||||||
|
|
||||||
==============================================================================
|
|
||||||
2. Compiling VIM with Perl interface *perl-compiling*
|
|
||||||
|
|
||||||
To compile Vim with Perl interface, you need Perl 5.004 (or later). Perl must
|
|
||||||
be installed before you compile Vim. Vim's Perl interface does NOT work with
|
|
||||||
the 5.003 version that has been officially released! It will probably work
|
|
||||||
with Perl 5.003_05 and later.
|
|
||||||
|
|
||||||
The Perl patches for Vim were made by:
|
|
||||||
Sven Verdoolaege <[email protected]>
|
|
||||||
Matt Gerassimof
|
|
||||||
|
|
||||||
Perl for MS-Windows can be found at:
|
|
||||||
http://www.perl.com/CPAN/ports/nt/Standard/x86/
|
|
||||||
|
|
||||||
==============================================================================
|
|
||||||
3. Using the Perl interface *perl-using*
|
|
||||||
|
|
||||||
*:perl* *:pe*
|
|
||||||
:pe[rl] {cmd} Execute Perl command {cmd}. The current package
|
|
||||||
is "main".
|
|
||||||
|
|
||||||
:pe[rl] << {endpattern}
|
|
||||||
{script}
|
|
||||||
{endpattern}
|
|
||||||
Execute Perl script {script}.
|
|
||||||
{endpattern} must NOT be preceded by any white space.
|
|
||||||
If {endpattern} is omitted, it defaults to a dot '.'
|
|
||||||
like for the |:append| and |:insert| commands. Using
|
|
||||||
'.' helps when inside a function, because "$i;" looks
|
|
||||||
like the start of an |:insert| command to Vim.
|
|
||||||
This form of the |:perl| command is mainly useful for
|
|
||||||
including perl code in vim scripts.
|
|
||||||
Note: This command doesn't work when the Perl feature
|
|
||||||
wasn't compiled in. To avoid errors, see
|
|
||||||
|script-here|.
|
|
||||||
|
|
||||||
|
|
||||||
Example vim script: >
|
|
||||||
|
|
||||||
function! WhitePearl()
|
|
||||||
perl << EOF
|
|
||||||
VIM::Msg("pearls are nice for necklaces");
|
|
||||||
VIM::Msg("rubys for rings");
|
|
||||||
VIM::Msg("pythons for bags");
|
|
||||||
VIM::Msg("tcls????");
|
|
||||||
EOF
|
|
||||||
endfunction
|
|
||||||
<
|
|
||||||
|
|
||||||
*:perldo* *:perld*
|
|
||||||
:[range]perld[o] {cmd} Execute Perl command {cmd} for each line in the
|
|
||||||
[range], with $_ being set to the text of each line in
|
|
||||||
turn, without a trailing <EOL>. Setting $_ will change
|
|
||||||
the text, but note that it is not possible to add or
|
|
||||||
delete lines using this command.
|
|
||||||
The default for [range] is the whole file: "1,$".
|
|
||||||
|
|
||||||
Here are some things you can try: >
|
|
||||||
|
|
||||||
:perl $a=1
|
|
||||||
:perldo $_ = reverse($_);1
|
|
||||||
:perl VIM::Msg("hello")
|
|
||||||
:perl $line = $curbuf->Get(42)
|
|
||||||
<
|
|
||||||
*E299*
|
|
||||||
Executing Perl commands in the |sandbox| is limited. ":perldo" will not be
|
|
||||||
possible at all. ":perl" will be evaluated in the Safe environment, if
|
|
||||||
possible.
|
|
||||||
|
|
||||||
|
|
||||||
*perl-overview*
|
|
||||||
Here is an overview of the functions that are available to Perl: >
|
|
||||||
|
|
||||||
:perl VIM::Msg("Text") # displays a message
|
|
||||||
:perl VIM::Msg("Error", "ErrorMsg") # displays an error message
|
|
||||||
:perl VIM::Msg("remark", "Comment") # displays a highlighted message
|
|
||||||
:perl VIM::SetOption("ai") # sets a vim option
|
|
||||||
:perl $nbuf = VIM::Buffers() # returns the number of buffers
|
|
||||||
:perl @buflist = VIM::Buffers() # returns array of all buffers
|
|
||||||
:perl $mybuf = (VIM::Buffers('qq.c'))[0] # returns buffer object for 'qq.c'
|
|
||||||
:perl @winlist = VIM::Windows() # returns array of all windows
|
|
||||||
:perl $nwin = VIM::Windows() # returns the number of windows
|
|
||||||
:perl ($success, $v) = VIM::Eval('&path') # $v: option 'path', $success: 1
|
|
||||||
:perl ($success, $v) = VIM::Eval('&xyz') # $v: '' and $success: 0
|
|
||||||
:perl $v = VIM::Eval('expand("<cfile>")') # expands <cfile>
|
|
||||||
:perl $curwin->SetHeight(10) # sets the window height
|
|
||||||
:perl @pos = $curwin->Cursor() # returns (row, col) array
|
|
||||||
:perl @pos = (10, 10)
|
|
||||||
:perl $curwin->Cursor(@pos) # sets cursor to @pos
|
|
||||||
:perl $curwin->Cursor(10,10) # sets cursor to row 10 col 10
|
|
||||||
:perl $mybuf = $curwin->Buffer() # returns the buffer object for window
|
|
||||||
:perl $curbuf->Name() # returns buffer name
|
|
||||||
:perl $curbuf->Number() # returns buffer number
|
|
||||||
:perl $curbuf->Count() # returns the number of lines
|
|
||||||
:perl $l = $curbuf->Get(10) # returns line 10
|
|
||||||
:perl @l = $curbuf->Get(1 .. 5) # returns lines 1 through 5
|
|
||||||
:perl $curbuf->Delete(10) # deletes line 10
|
|
||||||
:perl $curbuf->Delete(10, 20) # delete lines 10 through 20
|
|
||||||
:perl $curbuf->Append(10, "Line") # appends a line
|
|
||||||
:perl $curbuf->Append(10, "Line1", "Line2", "Line3") # appends 3 lines
|
|
||||||
:perl @l = ("L1", "L2", "L3")
|
|
||||||
:perl $curbuf->Append(10, @l) # appends L1, L2 and L3
|
|
||||||
:perl $curbuf->Set(10, "Line") # replaces line 10
|
|
||||||
:perl $curbuf->Set(10, "Line1", "Line2") # replaces lines 10 and 11
|
|
||||||
:perl $curbuf->Set(10, @l) # replaces 3 lines
|
|
||||||
<
|
|
||||||
*perl-Msg*
|
|
||||||
VIM::Msg({msg}, {group}?)
|
|
||||||
Displays the message {msg}. The optional {group}
|
|
||||||
argument specifies a highlight group for Vim to use
|
|
||||||
for the message.
|
|
||||||
|
|
||||||
*perl-SetOption*
|
|
||||||
VIM::SetOption({arg}) Sets a vim option. {arg} can be any argument that the
|
|
||||||
":set" command accepts. Note that this means that no
|
|
||||||
spaces are allowed in the argument! See |:set|.
|
|
||||||
|
|
||||||
*perl-Buffers*
|
|
||||||
VIM::Buffers([{bn}...]) With no arguments, returns a list of all the buffers
|
|
||||||
in an array context or returns the number of buffers
|
|
||||||
in a scalar context. For a list of buffer names or
|
|
||||||
numbers {bn}, returns a list of the buffers matching
|
|
||||||
{bn}, using the same rules as Vim's internal
|
|
||||||
|bufname()| function.
|
|
||||||
|
|
||||||
*perl-Windows*
|
|
||||||
VIM::Windows([{wn}...]) With no arguments, returns a list of all the windows
|
|
||||||
in an array context or returns the number of windows
|
|
||||||
in a scalar context. For a list of window numbers
|
|
||||||
{wn}, returns a list of the windows with those
|
|
||||||
numbers.
|
|
||||||
|
|
||||||
*perl-DoCommand*
|
|
||||||
VIM::DoCommand({cmd}) Executes Ex command {cmd}.
|
|
||||||
|
|
||||||
*perl-Eval*
|
|
||||||
VIM::Eval({expr}) Evaluates {expr} and returns (success, val).
|
|
||||||
success=1 indicates that val contains the value of
|
|
||||||
{expr}; success=0 indicates a failure to evaluate
|
|
||||||
the expression. '@x' returns the contents of register
|
|
||||||
x, '&x' returns the value of option x, 'x' returns the
|
|
||||||
value of internal |variables| x, and '$x' is equivalent
|
|
||||||
to perl's $ENV{x}. All |functions| accessible from
|
|
||||||
the command-line are valid for {expr}.
|
|
||||||
|
|
||||||
*perl-SetHeight*
|
|
||||||
Window->SetHeight({height})
|
|
||||||
Sets the Window height to {height}, within screen
|
|
||||||
limits.
|
|
||||||
|
|
||||||
*perl-GetCursor*
|
|
||||||
Window->Cursor({row}?, {col}?)
|
|
||||||
With no arguments, returns a (row, col) array for the
|
|
||||||
current cursor position in the Window. With {row} and
|
|
||||||
{col} arguments, sets the Window's cursor position to
|
|
||||||
{row} and {col}. Note that {col} is numbered from 0,
|
|
||||||
Perl-fashion, and thus is one less than the value in
|
|
||||||
Vim's ruler.
|
|
||||||
|
|
||||||
Window->Buffer() *perl-Buffer*
|
|
||||||
Returns the Buffer object corresponding to the given
|
|
||||||
Window.
|
|
||||||
|
|
||||||
*perl-Name*
|
|
||||||
Buffer->Name() Returns the filename for the Buffer.
|
|
||||||
|
|
||||||
*perl-Number*
|
|
||||||
Buffer->Number() Returns the number of the Buffer.
|
|
||||||
|
|
||||||
*perl-Count*
|
|
||||||
Buffer->Count() Returns the number of lines in the Buffer.
|
|
||||||
|
|
||||||
*perl-Get*
|
|
||||||
Buffer->Get({lnum}, {lnum}?, ...)
|
|
||||||
Returns a text string of line {lnum} in the Buffer
|
|
||||||
for each {lnum} specified. An array can be passed
|
|
||||||
with a list of {lnum}'s specified.
|
|
||||||
|
|
||||||
*perl-Delete*
|
|
||||||
Buffer->Delete({lnum}, {lnum}?)
|
|
||||||
Deletes line {lnum} in the Buffer. With the second
|
|
||||||
{lnum}, deletes the range of lines from the first
|
|
||||||
{lnum} to the second {lnum}.
|
|
||||||
|
|
||||||
*perl-Append*
|
|
||||||
Buffer->Append({lnum}, {line}, {line}?, ...)
|
|
||||||
Appends each {line} string after Buffer line {lnum}.
|
|
||||||
The list of {line}s can be an array.
|
|
||||||
|
|
||||||
*perl-Set*
|
|
||||||
Buffer->Set({lnum}, {line}, {line}?, ...)
|
|
||||||
Replaces one or more Buffer lines with specified
|
|
||||||
{lines}s, starting at Buffer line {lnum}. The list of
|
|
||||||
{line}s can be an array. If the arguments are
|
|
||||||
invalid, replacement does not occur.
|
|
||||||
|
|
||||||
$main::curwin
|
|
||||||
The current window object.
|
|
||||||
|
|
||||||
$main::curbuf
|
|
||||||
The current buffer object.
|
|
||||||
|
|
||||||
|
|
||||||
*script-here*
|
|
||||||
When using a script language in-line, you might want to skip this when the
|
|
||||||
language isn't supported. But this mechanism doesn't work: >
|
|
||||||
if has('perl')
|
|
||||||
perl << EOF
|
|
||||||
this will NOT work!
|
|
||||||
EOF
|
|
||||||
endif
|
|
||||||
Instead, put the Perl/Python/Ruby/etc. command in a function and call that
|
|
||||||
function: >
|
|
||||||
if has('perl')
|
|
||||||
function DefPerl()
|
|
||||||
perl << EOF
|
|
||||||
this works
|
|
||||||
EOF
|
|
||||||
endfunction
|
|
||||||
call DefPerl()
|
|
||||||
endif
|
|
||||||
Note that "EOF" must be at the start of the line.
|
|
||||||
|
|
||||||
vim:tw=78:ts=8:ft=help:norl:
|
|
||||||
@@ -1,299 +0,0 @@
|
|||||||
*if_pyth.txt* For Vim version 6.3. Last change: 2004 Feb 28
|
|
||||||
|
|
||||||
|
|
||||||
VIM REFERENCE MANUAL by Paul Moore
|
|
||||||
|
|
||||||
|
|
||||||
The Python Interface to Vim *python* *Python*
|
|
||||||
|
|
||||||
1. Commands |python-commands|
|
|
||||||
2. The vim module |python-vim|
|
|
||||||
3. Buffer objects |python-buffer|
|
|
||||||
4. Range objects |python-range|
|
|
||||||
5. Window objects |python-window|
|
|
||||||
|
|
||||||
{Vi does not have any of these commands}
|
|
||||||
|
|
||||||
The Python interface is available only when Vim was compiled with the
|
|
||||||
|+python| feature.
|
|
||||||
|
|
||||||
==============================================================================
|
|
||||||
1. Commands *python-commands*
|
|
||||||
|
|
||||||
*:python* *:py* *E205* *E263* *E264*
|
|
||||||
:[range]py[thon] {stmt}
|
|
||||||
Execute Python statement {stmt}.
|
|
||||||
|
|
||||||
:[range]py[thon] << {endmarker}
|
|
||||||
{script}
|
|
||||||
{endmarker}
|
|
||||||
Execute Python script {script}.
|
|
||||||
Note: This command doesn't work when the Python
|
|
||||||
feature wasn't compiled in. To avoid errors, see
|
|
||||||
|script-here|.
|
|
||||||
|
|
||||||
{endmarker} must NOT be preceded by any white space. If {endmarker} is
|
|
||||||
omitted from after the "<<", a dot '.' must be used after {script}, like
|
|
||||||
for the |:append| and |:insert| commands.
|
|
||||||
This form of the |:python| command is mainly useful for including python code
|
|
||||||
in Vim scripts.
|
|
||||||
|
|
||||||
Example: >
|
|
||||||
function! IcecreamInitialize()
|
|
||||||
python << EOF
|
|
||||||
class StrawberryIcecream:
|
|
||||||
def __call__(self):
|
|
||||||
print 'EAT ME'
|
|
||||||
EOF
|
|
||||||
endfunction
|
|
||||||
<
|
|
||||||
Note: Python is very sensitive to the indenting. Also make sure the "class"
|
|
||||||
line and "EOF" do not have any indent.
|
|
||||||
|
|
||||||
*:pyfile* *:pyf*
|
|
||||||
:[range]pyf[ile] {file}
|
|
||||||
Execute the Python script in {file}. The whole
|
|
||||||
argument is used as a single file name. {not in Vi}
|
|
||||||
|
|
||||||
Both of these commands do essentially the same thing - they execute a piece of
|
|
||||||
Python code, with the "current range" |python-range| set to the given line
|
|
||||||
range.
|
|
||||||
|
|
||||||
In the case of :python, the code to execute is in the command-line.
|
|
||||||
In the case of :pyfile, the code to execute is the contents of the given file.
|
|
||||||
|
|
||||||
Python commands cannot be used in the |sandbox|.
|
|
||||||
|
|
||||||
To pass arguments you need to set sys.argv[] explicitly. Example: >
|
|
||||||
|
|
||||||
:python import sys
|
|
||||||
:python sys.argv = ["foo", "bar"]
|
|
||||||
:pyfile myscript.py
|
|
||||||
|
|
||||||
Here are some examples *python-examples* >
|
|
||||||
|
|
||||||
:python from vim import *
|
|
||||||
:python from string import upper
|
|
||||||
:python current.line = upper(current.line)
|
|
||||||
:python print "Hello"
|
|
||||||
:python str = current.buffer[42]
|
|
||||||
|
|
||||||
(Note that changes - like the imports - persist from one command to the next,
|
|
||||||
just like in the Python interpreter.)
|
|
||||||
|
|
||||||
==============================================================================
|
|
||||||
2. The vim module *python-vim*
|
|
||||||
|
|
||||||
Python code gets all of its access to vim (with one exception - see
|
|
||||||
|python-output| below) via the "vim" module. The vim module implements two
|
|
||||||
methods, three constants, and one error object. You need to import the vim
|
|
||||||
module before using it: >
|
|
||||||
:python import vim
|
|
||||||
|
|
||||||
Overview >
|
|
||||||
print "Hello" # displays a message
|
|
||||||
vim.command(cmd) # execute an ex command
|
|
||||||
w = vim.windows[n] # gets window "n"
|
|
||||||
cw = vim.current.window # gets the current window
|
|
||||||
b = vim.buffers[n] # gets buffer "n"
|
|
||||||
cb = vim.current.buffer # gets the current buffer
|
|
||||||
w.height = lines # sets the window height
|
|
||||||
w.cursor = (row, col) # sets the window cursor position
|
|
||||||
pos = w.cursor # gets a tuple (row, col)
|
|
||||||
name = b.name # gets the buffer file name
|
|
||||||
line = b[n] # gets a line from the buffer
|
|
||||||
lines = b[n:m] # gets a list of lines
|
|
||||||
num = len(b) # gets the number of lines
|
|
||||||
b[n] = str # sets a line in the buffer
|
|
||||||
b[n:m] = [str1, str2, str3] # sets a number of lines at once
|
|
||||||
del b[n] # deletes a line
|
|
||||||
del b[n:m] # deletes a number of lines
|
|
||||||
|
|
||||||
|
|
||||||
Methods of the "vim" module
|
|
||||||
|
|
||||||
vim.command(str) *python-command*
|
|
||||||
Executes the vim (ex-mode) command str. Returns None.
|
|
||||||
Examples: >
|
|
||||||
vim.command("set tw=72")
|
|
||||||
vim.command("%s/aaa/bbb/g")
|
|
||||||
< The following definition executes Normal mode commands: >
|
|
||||||
def normal(str):
|
|
||||||
vim.command("normal "+str)
|
|
||||||
# Note the use of single quotes to delimit a string containing
|
|
||||||
# double quotes
|
|
||||||
normal('"a2dd"aP')
|
|
||||||
< *E659*
|
|
||||||
The ":python" command cannot be used recursively with Python 2.2 and
|
|
||||||
older. This only works with Python 2.3 and later: >
|
|
||||||
:python vim.command("python print 'Hello again Python'")
|
|
||||||
|
|
||||||
vim.eval(str) *python-eval*
|
|
||||||
Evaluates the expression str using the vim internal expression
|
|
||||||
evaluator (see |expression|). Returns the expression result as a
|
|
||||||
string.
|
|
||||||
Examples: >
|
|
||||||
text_width = vim.eval("&tw")
|
|
||||||
str = vim.eval("12+12") # NB result is a string! Use
|
|
||||||
# string.atoi() to convert to
|
|
||||||
# a number.
|
|
||||||
|
|
||||||
Error object of the "vim" module
|
|
||||||
|
|
||||||
vim.error *python-error*
|
|
||||||
Upon encountering a Vim error, Python raises an exception of type
|
|
||||||
vim.error.
|
|
||||||
Example: >
|
|
||||||
try:
|
|
||||||
vim.command("put a")
|
|
||||||
except vim.error:
|
|
||||||
# nothing in register a
|
|
||||||
|
|
||||||
Constants of the "vim" module
|
|
||||||
|
|
||||||
Note that these are not actually constants - you could reassign them.
|
|
||||||
But this is silly, as you would then lose access to the vim objects
|
|
||||||
to which the variables referred.
|
|
||||||
|
|
||||||
vim.buffers *python-buffers*
|
|
||||||
A sequence object providing access to the list of vim buffers. The
|
|
||||||
object supports the following operations: >
|
|
||||||
b = vim.buffers[i] # Indexing (read-only)
|
|
||||||
b in vim.buffers # Membership test
|
|
||||||
n = len(vim.buffers) # Number of elements
|
|
||||||
for b in vim.buffers: # Sequential access
|
|
||||||
<
|
|
||||||
vim.windows *python-windows*
|
|
||||||
A sequence object providing access to the list of vim windows. The
|
|
||||||
object supports the following operations: >
|
|
||||||
w = vim.windows[i] # Indexing (read-only)
|
|
||||||
w in vim.windows # Membership test
|
|
||||||
n = len(vim.windows) # Number of elements
|
|
||||||
for w in vim.windows: # Sequential access
|
|
||||||
<
|
|
||||||
vim.current *python-current*
|
|
||||||
An object providing access (via specific attributes) to various
|
|
||||||
"current" objects available in vim:
|
|
||||||
vim.current.line The current line (RW) String
|
|
||||||
vim.current.buffer The current buffer (RO) Buffer
|
|
||||||
vim.current.window The current window (RO) Window
|
|
||||||
vim.current.range The current line range (RO) Range
|
|
||||||
|
|
||||||
The last case deserves a little explanation. When the :python or
|
|
||||||
:pyfile command specifies a range, this range of lines becomes the
|
|
||||||
"current range". A range is a bit like a buffer, but with all access
|
|
||||||
restricted to a subset of lines. See |python-range| for more details.
|
|
||||||
|
|
||||||
|
|
||||||
Output from Python *python-output*
|
|
||||||
Vim displays all Python code output in the Vim message area. Normal
|
|
||||||
output appears as information messages, and error output appears as
|
|
||||||
error messages.
|
|
||||||
|
|
||||||
In implementation terms, this means that all output to sys.stdout
|
|
||||||
(including the output from print statements) appears as information
|
|
||||||
messages, and all output to sys.stderr (including error tracebacks)
|
|
||||||
appears as error messages.
|
|
||||||
|
|
||||||
*python-input*
|
|
||||||
Input (via sys.stdin, including input() and raw_input()) is not
|
|
||||||
supported, and may cause the program to crash. This should probably be
|
|
||||||
fixed.
|
|
||||||
|
|
||||||
==============================================================================
|
|
||||||
3. Buffer objects *python-buffer*
|
|
||||||
|
|
||||||
Buffer objects represent vim buffers. You can obtain them in a number of ways:
|
|
||||||
- via vim.current.buffer (|python-current|)
|
|
||||||
- from indexing vim.buffers (|python-buffers|)
|
|
||||||
- from the "buffer" attribute of a window (|python-window|)
|
|
||||||
|
|
||||||
Buffer objects have one read-only attribute - name - the full file name for
|
|
||||||
the buffer. They also have three methods (append, mark, and range; see below).
|
|
||||||
|
|
||||||
You can also treat buffer objects as sequence objects. In this context, they
|
|
||||||
act as if they were lists (yes, they are mutable) of strings, with each
|
|
||||||
element being a line of the buffer. All of the usual sequence operations,
|
|
||||||
including indexing, index assignment, slicing and slice assignment, work as
|
|
||||||
you would expect. Note that the result of indexing (slicing) a buffer is a
|
|
||||||
string (list of strings). This has one unusual consequence - b[:] is different
|
|
||||||
from b. In particular, "b[:] = None" deletes the whole of the buffer, whereas
|
|
||||||
"b = None" merely updates the variable b, with no effect on the buffer.
|
|
||||||
|
|
||||||
Buffer indexes start at zero, as is normal in Python. This differs from vim
|
|
||||||
line numbers, which start from 1. This is particularly relevant when dealing
|
|
||||||
with marks (see below) which use vim line numbers.
|
|
||||||
|
|
||||||
The buffer object methods are:
|
|
||||||
b.append(str) Append a line to the buffer
|
|
||||||
b.append(list) Append a list of lines to the buffer
|
|
||||||
Note that the option of supplying a list of strings to
|
|
||||||
the append method differs from the equivalent method
|
|
||||||
for Python's built-in list objects.
|
|
||||||
b.mark(name) Return a tuple (row,col) representing the position
|
|
||||||
of the named mark (can also get the []"<> marks)
|
|
||||||
b.range(s,e) Return a range object (see |python-range|) which
|
|
||||||
represents the part of the given buffer between line
|
|
||||||
numbers s and e |inclusive|.
|
|
||||||
|
|
||||||
Examples (assume b is the current buffer) >
|
|
||||||
print b.name # write the buffer file name
|
|
||||||
b[0] = "hello!!!" # replace the top line
|
|
||||||
b[:] = None # delete the whole buffer
|
|
||||||
del b[:] # delete the whole buffer (same as above)
|
|
||||||
b[0:0] = [ "a line" ] # add a line at the top
|
|
||||||
del b[2] # delete a line (the third)
|
|
||||||
b.append("bottom") # add a line at the bottom
|
|
||||||
n = len(b) # number of lines
|
|
||||||
(row,col) = b.mark('a') # named mark
|
|
||||||
r = b.range(1,5) # a sub-range of the buffer
|
|
||||||
|
|
||||||
==============================================================================
|
|
||||||
4. Range objects *python-range*
|
|
||||||
|
|
||||||
Range objects represent a part of a vim buffer. You can obtain them in a
|
|
||||||
number of ways:
|
|
||||||
- via vim.current.range (|python-current|)
|
|
||||||
- from a buffer's range() method (|python-buffer|)
|
|
||||||
|
|
||||||
A range object is almost identical in operation to a buffer object. However,
|
|
||||||
all operations are restricted to the lines within the range (this line range
|
|
||||||
can, of course, change as a result of slice assignments, line deletions, or
|
|
||||||
the range.append() method).
|
|
||||||
|
|
||||||
The range object attributes are:
|
|
||||||
r.start Index of first line into the buffer
|
|
||||||
r.end Index of last line into the buffer
|
|
||||||
|
|
||||||
The range object methods are:
|
|
||||||
r.append(str) Append a line to the range
|
|
||||||
r.append(list) Append a list of lines to the range
|
|
||||||
Note that the option of supplying a list of strings to
|
|
||||||
the append method differs from the equivalent method
|
|
||||||
for Python's built-in list objects.
|
|
||||||
|
|
||||||
Example (assume r is the current range):
|
|
||||||
# Send all lines in a range to the default printer
|
|
||||||
vim.command("%d,%dhardcopy!" % (r.start+1,r.end+1))
|
|
||||||
|
|
||||||
==============================================================================
|
|
||||||
5. Window objects *python-window*
|
|
||||||
|
|
||||||
Window objects represent vim windows. You can obtain them in a number of ways:
|
|
||||||
- via vim.current.window (|python-current|)
|
|
||||||
- from indexing vim.windows (|python-windows|)
|
|
||||||
|
|
||||||
You can manipulate window objects only through their attributes. They have no
|
|
||||||
methods, and no sequence or other interface.
|
|
||||||
|
|
||||||
Window attributes are:
|
|
||||||
buffer (read-only) The buffer displayed in this window
|
|
||||||
cursor (read-write) The current cursor position in the window
|
|
||||||
This is a tuple, (row,col).
|
|
||||||
height (read-write) The window height, in rows
|
|
||||||
width (read-write) The window width, in columns
|
|
||||||
The height attribute is writable only if the screen is split horizontally.
|
|
||||||
The width attribute is writable only if the screen is split vertically.
|
|
||||||
|
|
||||||
==============================================================================
|
|
||||||
vim:tw=78:ts=8:ft=help:norl:
|
|
||||||
@@ -1,175 +0,0 @@
|
|||||||
*if_ruby.txt* For Vim version 6.3. Last change: 2004 Mar 14
|
|
||||||
|
|
||||||
|
|
||||||
VIM REFERENCE MANUAL by Shugo Maeda
|
|
||||||
|
|
||||||
The Ruby Interface to Vim *ruby* *Ruby*
|
|
||||||
|
|
||||||
|
|
||||||
1. Commands |ruby-commands|
|
|
||||||
2. The VIM module |ruby-vim|
|
|
||||||
3. VIM::Buffer objects |ruby-buffer|
|
|
||||||
4. VIM::Window objects |ruby-window|
|
|
||||||
5. Global variables |ruby-globals|
|
|
||||||
|
|
||||||
{Vi does not have any of these commands}
|
|
||||||
*E266* *E267* *E268* *E269* *E270* *E271* *E272* *E273*
|
|
||||||
|
|
||||||
The Ruby interface only works when Vim was compiled with the |+ruby| feature.
|
|
||||||
|
|
||||||
The home page for ruby is http://www.ruby-lang.org/. You can find links for
|
|
||||||
downloading Ruby there.
|
|
||||||
|
|
||||||
==============================================================================
|
|
||||||
1. Commands *ruby-commands*
|
|
||||||
|
|
||||||
*:ruby* *:rub*
|
|
||||||
:rub[y] {cmd} Execute Ruby command {cmd}.
|
|
||||||
|
|
||||||
:rub[y] << {endpattern}
|
|
||||||
{script}
|
|
||||||
{endpattern}
|
|
||||||
Execute Ruby script {script}.
|
|
||||||
{endpattern} must NOT be preceded by any white space.
|
|
||||||
If {endpattern} is omitted, it defaults to a dot '.'
|
|
||||||
like for the |:append| and |:insert| commands. This
|
|
||||||
form of the |:ruby| command is mainly useful for
|
|
||||||
including ruby code in vim scripts.
|
|
||||||
Note: This command doesn't work when the Ruby feature
|
|
||||||
wasn't compiled in. To avoid errors, see
|
|
||||||
|script-here|.
|
|
||||||
|
|
||||||
Example Vim script: >
|
|
||||||
|
|
||||||
function! RedGem()
|
|
||||||
ruby << EOF
|
|
||||||
class Garnet
|
|
||||||
def initialize(s)
|
|
||||||
@buffer = VIM::Buffer.current
|
|
||||||
vimputs(s)
|
|
||||||
end
|
|
||||||
def vimputs(s)
|
|
||||||
@buffer.append(@buffer.count,s)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
gem = Garnet.new("pretty")
|
|
||||||
EOF
|
|
||||||
endfunction
|
|
||||||
<
|
|
||||||
|
|
||||||
*:rubydo* *:rubyd* *E265*
|
|
||||||
:[range]rubyd[o] {cmd} Evaluate Ruby command {cmd} for each line in the
|
|
||||||
[range], with $_ being set to the text of each line in
|
|
||||||
turn, without a trailing <EOL>. Setting $_ will change
|
|
||||||
the text, but note that it is not possible to add or
|
|
||||||
delete lines using this command.
|
|
||||||
The default for [range] is the whole file: "1,$".
|
|
||||||
|
|
||||||
*:rubyfile* *:rubyf*
|
|
||||||
:rubyf[ile] {file} Execute the Ruby script in {file}. This is the same as
|
|
||||||
":ruby load 'file'", but allows file name completion.
|
|
||||||
|
|
||||||
Executing Ruby commands is not possible in the |sandbox|.
|
|
||||||
|
|
||||||
==============================================================================
|
|
||||||
2. The VIM module *ruby-vim*
|
|
||||||
|
|
||||||
Ruby code gets all of its access to vim via the "VIM" module.
|
|
||||||
|
|
||||||
Overview >
|
|
||||||
print "Hello" # displays a message
|
|
||||||
VIM.command(cmd) # execute an ex command
|
|
||||||
num = VIM::Window.count # gets the number of windows
|
|
||||||
w = VIM::Window[n] # gets window "n"
|
|
||||||
cw = VIM::Window.current # gets the current window
|
|
||||||
num = VIM::Buffer.count # gets the number of buffers
|
|
||||||
b = VIM::Buffer[n] # gets buffer "n"
|
|
||||||
cb = VIM::Buffer.current # gets the current buffer
|
|
||||||
w.height = lines # sets the window height
|
|
||||||
w.cursor = [row, col] # sets the window cursor position
|
|
||||||
pos = w.cursor # gets an array [row, col]
|
|
||||||
name = b.name # gets the buffer file name
|
|
||||||
line = b[n] # gets a line from the buffer
|
|
||||||
num = b.count # gets the number of lines
|
|
||||||
b[n] = str # sets a line in the buffer
|
|
||||||
b.delete(n) # deletes a line
|
|
||||||
b.append(n, str) # appends a line after n
|
|
||||||
<
|
|
||||||
|
|
||||||
Module Functions:
|
|
||||||
|
|
||||||
*ruby-message*
|
|
||||||
VIM::message({msg})
|
|
||||||
Displays the message {msg}.
|
|
||||||
|
|
||||||
*ruby-set_option*
|
|
||||||
VIM::set_option({arg})
|
|
||||||
Sets a vim option. {arg} can be any argument that the ":set" command
|
|
||||||
accepts. Note that this means that no spaces are allowed in the
|
|
||||||
argument! See |:set|.
|
|
||||||
|
|
||||||
*ruby-command*
|
|
||||||
VIM::command({cmd})
|
|
||||||
Executes Ex command {cmd}.
|
|
||||||
|
|
||||||
*ruby-evaluate*
|
|
||||||
VIM::evaluate({expr})
|
|
||||||
Evaluates {expr} using the vim internal expression evaluator (see
|
|
||||||
|expression|). Returns the expression result as a string.
|
|
||||||
|
|
||||||
==============================================================================
|
|
||||||
3. VIM::Buffer objects *ruby-buffer*
|
|
||||||
|
|
||||||
VIM::Buffer objects represent vim buffers.
|
|
||||||
|
|
||||||
Class Methods:
|
|
||||||
|
|
||||||
current Returns the current buffer object.
|
|
||||||
count Returns the number of buffers.
|
|
||||||
self[{n}] Returns the buffer object for the number {n}. The first number
|
|
||||||
is 0.
|
|
||||||
|
|
||||||
Methods:
|
|
||||||
|
|
||||||
name Returns the name of the buffer.
|
|
||||||
number Returns the number of the buffer.
|
|
||||||
count Returns the number of lines.
|
|
||||||
length Returns the number of lines.
|
|
||||||
self[{n}] Returns a line from the buffer. {n} is the line number.
|
|
||||||
self[{n}] = {str}
|
|
||||||
Sets a line in the buffer. {n} is the line number.
|
|
||||||
delete({n}) Deletes a line from the buffer. {n} is the line number.
|
|
||||||
append({n}, {str})
|
|
||||||
Appends a line after the line {n}.
|
|
||||||
|
|
||||||
==============================================================================
|
|
||||||
4. VIM::Window objects *ruby-window*
|
|
||||||
|
|
||||||
VIM::Window objects represent vim windows.
|
|
||||||
|
|
||||||
Class Methods:
|
|
||||||
|
|
||||||
current Returns the current window object.
|
|
||||||
count Returns the number of windows.
|
|
||||||
self[{n}] Returns the window object for the number {n}. The first number
|
|
||||||
is 0.
|
|
||||||
|
|
||||||
Methods:
|
|
||||||
|
|
||||||
buffer Returns the buffer displayed in the window.
|
|
||||||
height Returns the height of the window.
|
|
||||||
height = {n} Sets the window height to {n}.
|
|
||||||
cursor Returns a [row, col] array for the cursor position.
|
|
||||||
cursor = [{row}, {col}]
|
|
||||||
Sets the cursor position to {row} and {col}.
|
|
||||||
|
|
||||||
==============================================================================
|
|
||||||
4. Global variables *ruby-globals*
|
|
||||||
|
|
||||||
There are two global variables.
|
|
||||||
|
|
||||||
$curwin The current window object.
|
|
||||||
$curbuf The current buffer object.
|
|
||||||
|
|
||||||
==============================================================================
|
|
||||||
vim:tw=78:ts=8:ft=help:norl:
|
|
||||||
@@ -1,95 +0,0 @@
|
|||||||
*if_sniff.txt* For Vim version 6.3. Last change: 2001 Sep 03
|
|
||||||
|
|
||||||
|
|
||||||
VIM REFERENCE MANUAL
|
|
||||||
by Anton Leherbauer ([email protected])
|
|
||||||
|
|
||||||
|
|
||||||
SNiFF+ and Vim *sniff*
|
|
||||||
|
|
||||||
1. Introduction |sniff-intro|
|
|
||||||
2. Commands |sniff-commands|
|
|
||||||
3. Compiling Vim with SNiFF+ interface |sniff-compiling|
|
|
||||||
|
|
||||||
{Vi does not have any of these commands} *E275* *E274* *E276* *E278* *E279*
|
|
||||||
|
|
||||||
The SNiFF+ interface only works, when Vim was compiled with the |+sniff|
|
|
||||||
feature.
|
|
||||||
|
|
||||||
==============================================================================
|
|
||||||
1. Introduction *sniff-intro*
|
|
||||||
|
|
||||||
The following features for the use with SNiFF+ are available:
|
|
||||||
|
|
||||||
* Vim can be used for all editing requests
|
|
||||||
* SNiFF+ recognizes and updates all browsers when a file is saved in Vim
|
|
||||||
* SNiFF+ commands can be issued directly from Vim
|
|
||||||
|
|
||||||
How to use Vim with SNiFF+
|
|
||||||
1. Make sure SNiFF+ is running.
|
|
||||||
2. In the Editor view of the Preferences dialog set the Field named
|
|
||||||
'External Editor' to 'Emacs/Vim'.
|
|
||||||
4. Start Vim
|
|
||||||
5. Connect to SNiFF+ (:sniff connect)
|
|
||||||
|
|
||||||
Once a connection is established, SNiFF+ uses Vim for all requests to show or
|
|
||||||
edit source code. On the other hand, you can send queries to SNiFF+ with the
|
|
||||||
:sniff command.
|
|
||||||
|
|
||||||
==============================================================================
|
|
||||||
2. Commands *sniff-commands*
|
|
||||||
|
|
||||||
*:sniff* *:sni*
|
|
||||||
:sni[ff] request [symbol] Send request to sniff with optional symbol.
|
|
||||||
{not in Vi}
|
|
||||||
:sni[ff] Display all possible requests and the connection
|
|
||||||
status
|
|
||||||
|
|
||||||
Most requests require a symbol (identifier) as parameter. If it is omitted,
|
|
||||||
Vim will use the current word under the cursor.
|
|
||||||
The available requests are listed below:
|
|
||||||
|
|
||||||
request mapping description
|
|
||||||
-------------------------------------------------------------------------------
|
|
||||||
connect sc Establish connection with SNiFF+.
|
|
||||||
Make sure SNiFF+ is prepared for this in the
|
|
||||||
Preferences
|
|
||||||
disconnect sq Disconnect from SNiFF+. You can reconnect any
|
|
||||||
time with :sniff connect (or 'sc')
|
|
||||||
toggle st Toggle between implementation
|
|
||||||
and definition file
|
|
||||||
find-symbol sf Load the symbol into a Symbol Browser
|
|
||||||
browse-class sb Loads the class into a Class Browser
|
|
||||||
superclass ss Edit superclass of symbol
|
|
||||||
overridden so Edit overridden method of symbol
|
|
||||||
retrieve-file srf Retrieve symbol in current file
|
|
||||||
retrieve-project srp Retrieve symbol in current project
|
|
||||||
retrieve-all-projects srP Retrieve symbol in all projects
|
|
||||||
retrieve-next sR Retrieve symbol using current Retriever
|
|
||||||
settings
|
|
||||||
goto-symbol sg Goto definition or implementation of symbol
|
|
||||||
hierarchy sh Load symbol into the Hierarchy Browser
|
|
||||||
restr-hier sH same as above but show only related classes
|
|
||||||
xref-to sxt Start a refers-to query on symbol and
|
|
||||||
load the results into the Cross Referencer
|
|
||||||
xref-by sxb Start a referred-by query on symbol
|
|
||||||
xref-has sxh Start a refers-to components query on symbol
|
|
||||||
xref-used-by sxu Start a referred-by as component query on
|
|
||||||
symbol
|
|
||||||
show-docu sd Show documentation of symbol
|
|
||||||
gen-docu sD Generate documentation of symbol
|
|
||||||
|
|
||||||
The mappings are defined in a file 'sniff.vim', which is part of every SNiFF+
|
|
||||||
product ($SNIFF_DIR/config/sniff.vim). This file is sourced whenever Vim
|
|
||||||
connects to SNiFF+.
|
|
||||||
|
|
||||||
==============================================================================
|
|
||||||
3. Compiling Vim with SNiFF+ interface *sniff-compiling*
|
|
||||||
|
|
||||||
To compile Vim with SNiFF+ support, you need two source files of the extra
|
|
||||||
archive: if_sniff.c and if_sniff.h.
|
|
||||||
On Unix: Edit the Makefile and uncomment the line "--enable-sniff". Or run
|
|
||||||
configure manually with this argument.
|
|
||||||
On NT: Specify SNIFF=yes with your make command.
|
|
||||||
|
|
||||||
vim:tw=78:ts=8:ft=help:norl:
|
|
||||||
@@ -1,512 +0,0 @@
|
|||||||
*if_tcl.txt* For Vim version 6.3. Last change: 2004 Jan 17
|
|
||||||
|
|
||||||
|
|
||||||
VIM REFERENCE MANUAL by Ingo Wilken
|
|
||||||
|
|
||||||
|
|
||||||
The Tcl Interface to Vim *tcl* *Tcl* *TCL*
|
|
||||||
|
|
||||||
1. Commands |tcl-ex-commands|
|
|
||||||
2. Tcl commands |tcl-commands|
|
|
||||||
3. Tcl variables |tcl-variables|
|
|
||||||
4. Tcl window commands |tcl-window-cmds|
|
|
||||||
5. Tcl buffer commands |tcl-buffer-cmds|
|
|
||||||
6. Miscellaneous; Output from Tcl |tcl-misc| |tcl-output|
|
|
||||||
7. Known bugs & problems |tcl-bugs|
|
|
||||||
8. Examples |tcl-examples|
|
|
||||||
|
|
||||||
{Vi does not have any of these commands} *E280* *E281*
|
|
||||||
|
|
||||||
The Tcl interface only works when Vim was compiled with the |+tcl| feature.
|
|
||||||
|
|
||||||
WARNING: There are probably still some bugs. Please send bug reports,
|
|
||||||
comments, ideas etc to <[email protected]>
|
|
||||||
|
|
||||||
==============================================================================
|
|
||||||
1. Commands *tcl-ex-commands* *E571* *E572*
|
|
||||||
|
|
||||||
*:tcl* *:tc*
|
|
||||||
:tc[l] {cmd} Execute Tcl command {cmd}.
|
|
||||||
|
|
||||||
:[range]tc[l] << {endmarker}
|
|
||||||
{script}
|
|
||||||
{endmarker}
|
|
||||||
Execute Tcl script {script}.
|
|
||||||
Note: This command doesn't work when the Tcl feature
|
|
||||||
wasn't compiled in. To avoid errors, see
|
|
||||||
|script-here|.
|
|
||||||
|
|
||||||
{endmarker} must NOT be preceded by any white space. If {endmarker} is
|
|
||||||
omitted from after the "<<", a dot '.' must be used after {script}, like for
|
|
||||||
the |:append| and |:insert| commands.
|
|
||||||
This form of the |:tcl| command is mainly useful for including tcl code in Vim
|
|
||||||
scripts.
|
|
||||||
|
|
||||||
Example: >
|
|
||||||
function! DefineDate()
|
|
||||||
tcl << EOF
|
|
||||||
proc date {} {
|
|
||||||
return [clock format [clock seconds]]
|
|
||||||
}
|
|
||||||
EOF
|
|
||||||
endfunction
|
|
||||||
<
|
|
||||||
|
|
||||||
*:tcldo* *:tcld*
|
|
||||||
:[range]tcld[o] {cmd} Execute Tcl command {cmd} for each line in [range]
|
|
||||||
with the variable "line" being set to the text of each
|
|
||||||
line in turn, and "lnum" to the line number. Setting
|
|
||||||
"line" will change the text, but note that it is not
|
|
||||||
possible to add or delete lines using this command.
|
|
||||||
If {cmd} returns an error, the command is interrupted.
|
|
||||||
The default for [range] is the whole file: "1,$".
|
|
||||||
See |tcl-var-line| and |tcl-var-lnum|. {not in Vi}
|
|
||||||
|
|
||||||
*:tclfile* *:tclf*
|
|
||||||
:tclf[ile] {file} Execute the Tcl script in {file}. This is the same as
|
|
||||||
":tcl source {file}", but allows file name completion.
|
|
||||||
{not in Vi}
|
|
||||||
|
|
||||||
|
|
||||||
Note that Tcl objects (like variables) persist from one command to the next,
|
|
||||||
just as in the Tcl shell.
|
|
||||||
|
|
||||||
Executing Tcl commands is not possible in the |sandbox|.
|
|
||||||
|
|
||||||
==============================================================================
|
|
||||||
2. Tcl commands *tcl-commands*
|
|
||||||
|
|
||||||
Tcl code gets all of its access to vim via commands in the "::vim" namespace.
|
|
||||||
The following commands are implemented: >
|
|
||||||
|
|
||||||
::vim::beep # Guess.
|
|
||||||
::vim::buffer {n} # Create Tcl command for one buffer.
|
|
||||||
::vim::buffer list # Create Tcl commands for all buffers.
|
|
||||||
::vim::command [-quiet] {cmd} # Execute an ex command.
|
|
||||||
::vim::expr {expr} # Use Vim's expression evaluator.
|
|
||||||
::vim::option {opt} # Get vim option.
|
|
||||||
::vim::option {opt} {val} # Set vim option.
|
|
||||||
::vim::window list # Create Tcl commands for all windows.
|
|
||||||
|
|
||||||
Commands:
|
|
||||||
::vim::beep *tcl-beep*
|
|
||||||
Honk. Does not return a result.
|
|
||||||
|
|
||||||
::vim::buffer {n} *tcl-buffer*
|
|
||||||
::vim::buffer exists {n}
|
|
||||||
::vim::buffer list
|
|
||||||
Provides access to vim buffers. With an integer argument, creates a
|
|
||||||
buffer command (see |tcl-buffer-cmds|) for the buffer with that
|
|
||||||
number, and returns its name as the result. Invalid buffer numbers
|
|
||||||
result in a standard Tcl error. To test for valid buffer numbers,
|
|
||||||
vim's internal functions can be used: >
|
|
||||||
set nbufs [::vim::expr bufnr("$")]
|
|
||||||
set isvalid [::vim::expr "bufexists($n)"]
|
|
||||||
< The "list" option creates a buffer command for each valid buffer, and
|
|
||||||
returns a list of the command names as the result.
|
|
||||||
Example: >
|
|
||||||
set bufs [::vim::buffer list]
|
|
||||||
foreach b $bufs { $b append end "The End!" }
|
|
||||||
< The "exists" option checks if a buffer with the given number exists.
|
|
||||||
Example: >
|
|
||||||
if { [::vim::buffer exists $n] } { ::vim::command ":e #$n" }
|
|
||||||
< This command might be replaced by a variable in future versions.
|
|
||||||
See also |tcl-var-current| for the current buffer.
|
|
||||||
|
|
||||||
::vim::command {cmd} *tcl-command*
|
|
||||||
::vim::command -quiet {cmd}
|
|
||||||
Execute the vim (ex-mode) command {cmd}. Any ex command that affects
|
|
||||||
a buffer or window uses the current buffer/current window. Does not
|
|
||||||
return a result other than a standard Tcl error code. After this
|
|
||||||
command is completed, the "::vim::current" variable is updated.
|
|
||||||
The "-quiet" flag suppresses any error messages from vim.
|
|
||||||
Examples: >
|
|
||||||
::vim::command "set ts=8"
|
|
||||||
::vim::command "%s/foo/bar/g"
|
|
||||||
< To execute normal-mode commands, use "normal" (see |:normal|): >
|
|
||||||
set cmd "jj"
|
|
||||||
::vim::command "normal $cmd"
|
|
||||||
< See also |tcl-window-command| and |tcl-buffer-command|.
|
|
||||||
|
|
||||||
::vim::expr {expr} *tcl-expr*
|
|
||||||
Evaluates the expression {expr} using vim's internal expression
|
|
||||||
evaluator (see |expression|). Any expression that queries a buffer
|
|
||||||
or window property uses the current buffer/current window. Returns
|
|
||||||
the result as a string.
|
|
||||||
Examples: >
|
|
||||||
set perl_available [::vim::expr has("perl")]
|
|
||||||
< See also |tcl-window-expr| and |tcl-buffer-expr|.
|
|
||||||
|
|
||||||
::vim::option {opt} *tcl-option*
|
|
||||||
::vim::option {opt} {value}
|
|
||||||
Without second argument, queries the value of a vim option. With this
|
|
||||||
argument, sets the vim option to {value}, and returns the previous
|
|
||||||
value as the result. Any options that are marked as 'local to buffer'
|
|
||||||
or 'local to window' affect the current buffer/current window. The
|
|
||||||
global value is not changed, use the ":set" command for that. For
|
|
||||||
boolean options, {value} should be "0" or "1", or any of the keywords
|
|
||||||
"on", "off" or "toggle". See |option-summary| for a list of options.
|
|
||||||
Example: >
|
|
||||||
::vim::option ts 8
|
|
||||||
< See also |tcl-window-option| and |tcl-buffer-option|.
|
|
||||||
|
|
||||||
::vim::window {option} *tcl-window*
|
|
||||||
Provides access to vim windows. Currently only the "list" option is
|
|
||||||
implemented. This creates a window command (see |tcl-window-cmds|) for
|
|
||||||
each window, and returns a list of the command names as the result.
|
|
||||||
Example: >
|
|
||||||
set wins [::vim::window list]
|
|
||||||
foreach w $wins { $w height 4 }
|
|
||||||
< This command might be replaced by a variable in future versions.
|
|
||||||
See also |tcl-var-current| for the current window.
|
|
||||||
|
|
||||||
==============================================================================
|
|
||||||
3. Tcl variables *tcl-variables*
|
|
||||||
|
|
||||||
The ::vim namespace contains a few variables. These are created when the Tcl
|
|
||||||
interpreter is called from vim and set to current values. >
|
|
||||||
|
|
||||||
::vim::current # array containing "current" objects
|
|
||||||
::vim::lbase # number of first line
|
|
||||||
::vim::range # array containing current range numbers
|
|
||||||
line # current line as a string (:tcldo only)
|
|
||||||
lnum # current line number (:tcldo only)
|
|
||||||
|
|
||||||
Variables:
|
|
||||||
::vim::current *tcl-var-current*
|
|
||||||
This is an array providing access to various "current" objects
|
|
||||||
available in vim. The contents of this array are updated after
|
|
||||||
"::vim::command" is called, as this might change vim's current
|
|
||||||
settings (e.g., by deleting the current buffer).
|
|
||||||
The "buffer" element contains the name of the buffer command for the
|
|
||||||
current buffer. This can be used directly to invoke buffer commands
|
|
||||||
(see |tcl-buffer-cmds|). This element is read-only.
|
|
||||||
Example: >
|
|
||||||
$::vim::current(buffer) insert begin "Hello world"
|
|
||||||
< The "window" element contains the name of the window command for the
|
|
||||||
current window. This can be used directly to invoke window commands
|
|
||||||
(see |tcl-window-cmds|). This element is read-only.
|
|
||||||
Example: >
|
|
||||||
$::vim::current(window) height 10
|
|
||||||
<
|
|
||||||
::vim::lbase *tcl-var-lbase*
|
|
||||||
This variable controls how Tcl treats line numbers. If it is set to
|
|
||||||
'1', then lines and columns start at 1. This way, line numbers from
|
|
||||||
Tcl commands and vim expressions are compatible. If this variable is
|
|
||||||
set to '0', then line numbers and columns start at 0 in Tcl. This is
|
|
||||||
useful if you want to treat a buffer as a Tcl list or a line as a Tcl
|
|
||||||
string and use standard Tcl commands that return an index ("lsort" or
|
|
||||||
"string first", for example). The default value is '1'. Currently,
|
|
||||||
any non-zero values is treated as '1', but your scripts should not
|
|
||||||
rely on this. See also |tcl-linenumbers|.
|
|
||||||
|
|
||||||
::vim::range *tcl-var-range*
|
|
||||||
This is an array with three elements, "start", "begin" and "end". It
|
|
||||||
contains the line numbers of the start and end row of the current
|
|
||||||
range. "begin" is the same as "start". This variable is read-only.
|
|
||||||
See |tcl-examples|.
|
|
||||||
|
|
||||||
line *tcl-var-line*
|
|
||||||
lnum *tcl-var-lnum*
|
|
||||||
These global variables are only available if the ":tcldo" ex command
|
|
||||||
is being executed. They contain the text and line number of the
|
|
||||||
current line. When the Tcl command invoked by ":tcldo" is completed,
|
|
||||||
the current line is set to the contents of the "line" variable, unless
|
|
||||||
the variable was unset by the Tcl command. The "lnum" variable is
|
|
||||||
read-only. These variables are not in the "::vim" namespace so they
|
|
||||||
can be used in ":tcldo" without much typing (this might be changed in
|
|
||||||
future versions). See also |tcl-linenumbers|.
|
|
||||||
|
|
||||||
==============================================================================
|
|
||||||
4. Tcl window commands *tcl-window-cmds*
|
|
||||||
|
|
||||||
Window commands represent vim windows. They are created by several commands:
|
|
||||||
::vim::window list |tcl-window|
|
|
||||||
"windows" option of a buffer command |tcl-buffer-windows|
|
|
||||||
The ::vim::current(window) variable contains the name of the window command
|
|
||||||
for the current window. A window command is automatically deleted when the
|
|
||||||
corresponding vim window is closed.
|
|
||||||
|
|
||||||
Lets assume the name of the window command is stored in the Tcl variable "win",
|
|
||||||
i.e. "$win" calls the command. The following options are available: >
|
|
||||||
|
|
||||||
$win buffer # Create Tcl command for window's buffer.
|
|
||||||
$win command {cmd} # Execute ex command in windows context.
|
|
||||||
$win cursor # Get current cursor position.
|
|
||||||
$win cursor {var} # Set cursor position from array variable.
|
|
||||||
$win cursor {row} {col} # Set cursor position.
|
|
||||||
$win delcmd {cmd} # Call Tcl command when window is closed.
|
|
||||||
$win expr {expr} # Evaluate vim expression in windows context.
|
|
||||||
$win height # Report the window's height.
|
|
||||||
$win height {n} # Set the window's height.
|
|
||||||
$win option {opt} [val] # Get/Set vim option in windows context.
|
|
||||||
|
|
||||||
Options:
|
|
||||||
$win buffer *tcl-window-buffer*
|
|
||||||
Creates a Tcl command for the window's buffer, and returns its name as
|
|
||||||
the result. The name should be stored in a variable: >
|
|
||||||
set buf [$win buffer]
|
|
||||||
< $buf is now a valid Tcl command. See |tcl-buffer-cmds| for the
|
|
||||||
available options.
|
|
||||||
|
|
||||||
$win cursor *tcl-window-cursor*
|
|
||||||
$win cursor {var}
|
|
||||||
$win cursor {row} {col}
|
|
||||||
Without argument, reports the current cursor position as a string.
|
|
||||||
This can be converted to a Tcl array variable: >
|
|
||||||
array set here [$win cursor]
|
|
||||||
< "here(row)" and "here(column)" now contain the cursor position.
|
|
||||||
With a single argument, the argument is interpreted as the name of a
|
|
||||||
Tcl array variable, which must contain two elements "row" and "column".
|
|
||||||
These are used to set the cursor to the new position: >
|
|
||||||
$win cursor here ;# not $here !
|
|
||||||
< With two arguments, sets the cursor to the specified row and column: >
|
|
||||||
$win cursor $here(row) $here(column)
|
|
||||||
< Invalid positions result in a standard Tcl error, which can be caught
|
|
||||||
with "catch". The row and column values depend on the "::vim::lbase"
|
|
||||||
variable. See |tcl-var-lbase|.
|
|
||||||
|
|
||||||
$win delcmd {cmd} *tcl-window-delcmd*
|
|
||||||
Registers the Tcl command {cmd} as a deletion callback for the window.
|
|
||||||
This command is executed (in the global scope) just before the window
|
|
||||||
is closed. Complex commands should be build with "list": >
|
|
||||||
$win delcmd [list puts vimerr "window deleted"]
|
|
||||||
< See also |tcl-buffer-delcmd|.
|
|
||||||
|
|
||||||
$win height *tcl-window-height*
|
|
||||||
$win height {n}
|
|
||||||
Without argument, reports the window's current height. With an
|
|
||||||
argument, tries to set the window's height to {n}, then reports the
|
|
||||||
new height (which might be different from {n}).
|
|
||||||
|
|
||||||
$win command [-quiet] {cmd} *tcl-window-command*
|
|
||||||
$win expr {expr} *tcl-window-expr*
|
|
||||||
$win option {opt} [val] *tcl-window-option*
|
|
||||||
These are similar to "::vim::command" etc., except that everything is
|
|
||||||
done in the context of the window represented by $win, instead of the
|
|
||||||
current window. For example, setting an option that is marked 'local
|
|
||||||
to window' affects the window $win. Anything that affects or queries
|
|
||||||
a buffer uses the buffer displayed in this window (i.e. the buffer
|
|
||||||
that is represented by "$win buffer"). See |tcl-command|, |tcl-expr|
|
|
||||||
and |tcl-option| for more information.
|
|
||||||
Example: >
|
|
||||||
$win option number on
|
|
||||||
|
|
||||||
==============================================================================
|
|
||||||
5. Tcl buffer commands *tcl-buffer-cmds*
|
|
||||||
|
|
||||||
Buffer commands represent vim buffers. They are created by several commands:
|
|
||||||
::vim::buffer {N} |tcl-buffer|
|
|
||||||
::vim::buffer list |tcl-buffer|
|
|
||||||
"buffer" option of a window command |tcl-window-buffer|
|
|
||||||
The ::vim::current(buffer) variable contains the name of the buffer command
|
|
||||||
for the current buffer. A buffer command is automatically deleted when the
|
|
||||||
corresponding vim buffer is destroyed. Whenever the buffer's contents are
|
|
||||||
changed, all marks in the buffer are automatically adjusted. Any changes to
|
|
||||||
the buffer's contents made by Tcl commands can be undone with the "undo" vim
|
|
||||||
command (see |undo|).
|
|
||||||
|
|
||||||
Lets assume the name of the buffer command is stored in the Tcl variable "buf",
|
|
||||||
i.e. "$buf" calls the command. The following options are available: >
|
|
||||||
|
|
||||||
$buf append {n} {str} # Append a line to buffer, after line {n}.
|
|
||||||
$buf command {cmd} # Execute ex command in buffers context.
|
|
||||||
$buf count # Report number of lines in buffer.
|
|
||||||
$buf delcmd {cmd} # Call Tcl command when buffer is deleted.
|
|
||||||
$buf delete {n} # Delete a single line.
|
|
||||||
$buf delete {n} {m} # Delete several lines.
|
|
||||||
$buf expr {expr} # Evaluate vim expression in buffers context.
|
|
||||||
$buf get {n} # Get a single line as a string.
|
|
||||||
$buf get {n} {m} # Get several lines as a list.
|
|
||||||
$buf insert {n} {str} # Insert a line in buffer, as line {n}.
|
|
||||||
$buf last # Report line number of last line in buffer.
|
|
||||||
$buf mark {mark} # Report position of buffer mark.
|
|
||||||
$buf name # Report name of file in buffer.
|
|
||||||
$buf number # Report number of this buffer.
|
|
||||||
$buf option {opt} [val] # Get/Set vim option in buffers context.
|
|
||||||
$buf set {n} {text} # Replace a single line.
|
|
||||||
$buf set {n} {m} {list} # Replace several lines.
|
|
||||||
$buf windows # Create Tcl commands for buffer's windows.
|
|
||||||
<
|
|
||||||
*tcl-linenumbers*
|
|
||||||
Most buffer commands take line numbers as arguments. How Tcl treats these
|
|
||||||
numbers depends on the "::vim::lbase" variable (see |tcl-var-lbase|). Instead
|
|
||||||
of line numbers, several keywords can be also used: "top", "start", "begin",
|
|
||||||
"first", "bottom", "end" and "last".
|
|
||||||
|
|
||||||
Options:
|
|
||||||
$buf append {n} {str} *tcl-buffer-append*
|
|
||||||
$buf insert {n} {str} *tcl-buffer-insert*
|
|
||||||
Add a line to the buffer. With the "insert" option, the string
|
|
||||||
becomes the new line {n}, with "append" it is inserted after line {n}.
|
|
||||||
Example: >
|
|
||||||
$buf insert top "This is the beginning."
|
|
||||||
$buf append end "This is the end."
|
|
||||||
< To add a list of lines to the buffer, use a loop: >
|
|
||||||
foreach line $list { $buf append $num $line ; incr num }
|
|
||||||
<
|
|
||||||
$buf count *tcl-buffer-count*
|
|
||||||
Reports the total number of lines in the buffer.
|
|
||||||
|
|
||||||
$buf delcmd {cmd} *tcl-buffer-delcmd*
|
|
||||||
Registers the Tcl command {cmd} as a deletion callback for the buffer.
|
|
||||||
This command is executed (in the global scope) just before the buffer
|
|
||||||
is deleted. Complex commands should be build with "list": >
|
|
||||||
$buf delcmd [list puts vimerr "buffer [$buf number] gone"]
|
|
||||||
< See also |tcl-window-delcmd|.
|
|
||||||
|
|
||||||
$buf delete {n} *tcl-buffer-delete*
|
|
||||||
$buf delete {n} {m}
|
|
||||||
Deletes line {n} or lines {n} through {m} from the buffer.
|
|
||||||
This example deletes everything except the last line: >
|
|
||||||
$buf delete first [expr [$buf last] - 1]
|
|
||||||
<
|
|
||||||
$buf get {n} *tcl-buffer-get*
|
|
||||||
$buf get {n} {m}
|
|
||||||
Gets one or more lines from the buffer. For a single line, the result
|
|
||||||
is a string; for several lines, a list of strings.
|
|
||||||
Example: >
|
|
||||||
set topline [$buf get top]
|
|
||||||
<
|
|
||||||
$buf last *tcl-buffer-last*
|
|
||||||
Reports the line number of the last line. This value depends on the
|
|
||||||
"::vim::lbase" variable. See |tcl-var-lbase|.
|
|
||||||
|
|
||||||
$buf mark {mark} *tcl-buffer-mark*
|
|
||||||
Reports the position of the named mark as a string, similar to the
|
|
||||||
cursor position of the "cursor" option of a window command (see
|
|
||||||
|tcl-window-cursor|). This can be converted to a Tcl array variable: >
|
|
||||||
array set mpos [$buf mark "a"]
|
|
||||||
< "mpos(column)" and "mpos(row)" now contain the position of the mark.
|
|
||||||
If the mark is not set, a standard Tcl error results.
|
|
||||||
|
|
||||||
$buf name
|
|
||||||
Reports the name of the file in the buffer. For a buffer without a
|
|
||||||
file, this is an empty string.
|
|
||||||
|
|
||||||
$buf number
|
|
||||||
Reports the number of this buffer. See |:buffers|.
|
|
||||||
This example deletes a buffer from vim: >
|
|
||||||
::vim::command "bdelete [$buf number]"
|
|
||||||
<
|
|
||||||
$buf set {n} {string} *tcl-buffer-set*
|
|
||||||
$buf set {n} {m} {list}
|
|
||||||
Replace one or several lines in the buffer. If the list contains more
|
|
||||||
elements than there are lines to replace, they are inserted into the
|
|
||||||
buffer. If the list contains fewer elements, any unreplaced line is
|
|
||||||
deleted from the buffer.
|
|
||||||
|
|
||||||
$buf windows *tcl-buffer-windows*
|
|
||||||
Creates a window command for each window that displays this buffer, and
|
|
||||||
returns a list of the command names as the result.
|
|
||||||
Example: >
|
|
||||||
set winlist [$buf windows]
|
|
||||||
foreach win $winlist { $win height 4 }
|
|
||||||
< See |tcl-window-cmds| for the available options.
|
|
||||||
|
|
||||||
$buf command [-quiet] {cmd} *tcl-buffer-command*
|
|
||||||
$buf expr {exr} *tcl-buffer-expr*
|
|
||||||
$buf option {opt} [val] *tcl-buffer-option*
|
|
||||||
These are similar to "::vim::command" etc., except that everything is
|
|
||||||
done in the context of the buffer represented by $buf, instead of the
|
|
||||||
current buffer. For example, setting an option that is marked 'local
|
|
||||||
to buffer' affects the buffer $buf. Anything that affects or queries
|
|
||||||
a window uses the first window in vim's window list that displays this
|
|
||||||
buffer (i.e. the first entry in the list returned by "$buf windows").
|
|
||||||
See |tcl-command|, |tcl-expr| and |tcl-option| for more information.
|
|
||||||
Example: >
|
|
||||||
if { [$buf option modified] } { $buf command "w" }
|
|
||||||
|
|
||||||
==============================================================================
|
|
||||||
6. Miscellaneous; Output from Tcl *tcl-misc* *tcl-output*
|
|
||||||
|
|
||||||
The standard Tcl commands "exit" and "catch" are replaced by custom versions.
|
|
||||||
"exit" terminates the current Tcl script and returns to vim, which deletes the
|
|
||||||
Tcl interpreter. Another call to ":tcl" then creates a new Tcl interpreter.
|
|
||||||
"exit" does NOT terminate vim! "catch" works as before, except that it does
|
|
||||||
not prevent script termination from "exit". An exit code != 0 causes the ex
|
|
||||||
command that invoked the Tcl script to return an error.
|
|
||||||
|
|
||||||
Two new I/O streams are available in Tcl, "vimout" and "vimerr". All output
|
|
||||||
directed to them is displayed in the vim message area, as information messages
|
|
||||||
and error messages, respectively. The standard Tcl output streams stdout and
|
|
||||||
stderr are mapped to vimout and vimerr, so that a normal "puts" command can be
|
|
||||||
used to display messages in vim.
|
|
||||||
|
|
||||||
==============================================================================
|
|
||||||
7. Known bugs & problems *tcl-bugs*
|
|
||||||
|
|
||||||
Calling one of the Tcl ex commands from inside Tcl (via "::vim::command") may
|
|
||||||
have unexpected side effects. The command creates a new interpreter, which
|
|
||||||
has the same abilities as the standard interpreter - making "::vim::command"
|
|
||||||
available in a safe child interpreter therefore makes the child unsafe. (It
|
|
||||||
would be trivial to block nested :tcl* calls or ensure that such calls from a
|
|
||||||
safe interpreter create only new safe interpreters, but quite pointless -
|
|
||||||
depending on vim's configuration, "::vim::command" may execute arbitrary code
|
|
||||||
in any number of other scripting languages.) A call to "exit" within this new
|
|
||||||
interpreter does not affect the old interpreter; it only terminates the new
|
|
||||||
interpreter, then script processing continues normally in the old interpreter.
|
|
||||||
|
|
||||||
Input from stdin is currently not supported.
|
|
||||||
|
|
||||||
==============================================================================
|
|
||||||
8. Examples: *tcl-examples*
|
|
||||||
|
|
||||||
Here are a few small (and maybe useful) Tcl scripts.
|
|
||||||
|
|
||||||
This script sorts the lines of the entire buffer (assume it contains a list
|
|
||||||
of names or something similar):
|
|
||||||
set buf $::vim::current(buffer)
|
|
||||||
set lines [$buf get top bottom]
|
|
||||||
set lines [lsort -dictionary $lines]
|
|
||||||
$buf set top bottom $lines
|
|
||||||
|
|
||||||
This script reverses the lines in the buffer. Note the use of "::vim::lbase"
|
|
||||||
and "$buf last" to work with any line number setting.
|
|
||||||
set buf $::vim::current(buffer)
|
|
||||||
set t $::vim::lbase
|
|
||||||
set b [$buf last]
|
|
||||||
while { $t < $b } {
|
|
||||||
set tl [$buf get $t]
|
|
||||||
set bl [$buf get $b]
|
|
||||||
$buf set $t $bl
|
|
||||||
$buf set $b $tl
|
|
||||||
incr t
|
|
||||||
incr b -1
|
|
||||||
}
|
|
||||||
|
|
||||||
This script adds a consecutive number to each line in the current range:
|
|
||||||
set buf $::vim::current(buffer)
|
|
||||||
set i $::vim::range(start)
|
|
||||||
set n 1
|
|
||||||
while { $i <= $::vim::range(end) } {
|
|
||||||
set line [$buf get $i]
|
|
||||||
$buf set $i "$n\t$line"
|
|
||||||
incr i ; incr n
|
|
||||||
}
|
|
||||||
|
|
||||||
The same can also be done quickly with two ex commands, using ":tcldo":
|
|
||||||
:tcl set n 1
|
|
||||||
:[range]tcldo set line "$n\t$line" ; incr n
|
|
||||||
|
|
||||||
This procedure runs an ex command on each buffer (idea stolen from Ron Aaron):
|
|
||||||
proc eachbuf { cmd } {
|
|
||||||
foreach b [::vim::buffer list] {
|
|
||||||
$b command $cmd
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Use it like this:
|
|
||||||
:tcl eachbuf %s/foo/bar/g
|
|
||||||
Be careful with Tcl's string and backslash substitution, tough. If in doubt,
|
|
||||||
surround the ex command with curly braces.
|
|
||||||
|
|
||||||
|
|
||||||
If you want to add some Tcl procedures permanently to vim, just place them in
|
|
||||||
a file (e.g. "~/.vimrc.tcl" on Unix machines), and add these lines to your
|
|
||||||
startup file (usually "~/.vimrc" on Unix):
|
|
||||||
if has("tcl")
|
|
||||||
tclfile ~/.vimrc.tcl
|
|
||||||
endif
|
|
||||||
|
|
||||||
==============================================================================
|
|
||||||
vim:tw=78:ts=8:ft=help:norl:
|
|
||||||
@@ -1,522 +0,0 @@
|
|||||||
*indent.txt* For Vim version 6.3. Last change: 2004 Apr 25
|
|
||||||
|
|
||||||
|
|
||||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
|
||||||
|
|
||||||
|
|
||||||
This file is about indenting C programs and other files.
|
|
||||||
|
|
||||||
1. Indenting C programs |C-indenting|
|
|
||||||
2. Indenting by expression |indent-expression|
|
|
||||||
|
|
||||||
==============================================================================
|
|
||||||
1. Indenting C programs *C-indenting*
|
|
||||||
|
|
||||||
The basics for C indenting are explained in section |30.2| of the user manual.
|
|
||||||
|
|
||||||
Vim has options for automatically indenting C program files. These options
|
|
||||||
affect only the indent and do not perform other formatting. For comment
|
|
||||||
formatting, see |format-comments|.
|
|
||||||
|
|
||||||
Note that this will not work when the |+smartindent| or |+cindent| features
|
|
||||||
have been disabled at compile time.
|
|
||||||
|
|
||||||
There are in fact four methods available for indentation:
|
|
||||||
'autoindent' uses the indent from the previous line.
|
|
||||||
'smartindent' is like 'autoindent' but also recognizes some C syntax to
|
|
||||||
increase/reduce the indent where appropriate.
|
|
||||||
'cindent' Works more cleverly than the other two and is configurable to
|
|
||||||
different indenting styles.
|
|
||||||
'indentexpr' The most flexible of all: Evaluates an expression to compute
|
|
||||||
the indent of a line. When non-empty this method overrides
|
|
||||||
the other ones. See |indent-expression|.
|
|
||||||
The rest of this section describes the 'cindent' option.
|
|
||||||
|
|
||||||
Note that 'cindent' indenting does not work for every code scenario. Vim
|
|
||||||
is not a C compiler: it does not recognize all syntax.
|
|
||||||
|
|
||||||
These four options control C program indenting:
|
|
||||||
'cindent' Enables Vim to perform C program indenting automatically.
|
|
||||||
'cinkeys' Specifies which keys trigger reindenting in insert mode.
|
|
||||||
'cinoptions' Sets your preferred indent style.
|
|
||||||
'cinwords' Defines keywords that start an extra indent in the next line.
|
|
||||||
|
|
||||||
If 'lisp' is not on and 'equalprg' is empty, the "=" operator indents using
|
|
||||||
Vim's built-in algorithm rather than calling an external program.
|
|
||||||
|
|
||||||
See |autocommand| for how to set the 'cindent' option automatically for C code
|
|
||||||
files and reset it for others.
|
|
||||||
|
|
||||||
*cinkeys-format* *indentkeys-format*
|
|
||||||
The 'cinkeys' option is a string that controls Vim's indenting in response to
|
|
||||||
typing certain characters or commands in certain contexts. Note that this not
|
|
||||||
only triggers C-indenting. When 'indentexpr' is not empty 'indentkeys' is
|
|
||||||
used instead. The format of 'cinkeys' and 'indentkeys' is equal.
|
|
||||||
|
|
||||||
The default is "0{,0},0),:,0#,!^F,o,O,e" which specifies that indenting occurs
|
|
||||||
as follows:
|
|
||||||
|
|
||||||
"0{" if you type '{' as the first character in a line
|
|
||||||
"0}" if you type '}' as the first character in a line
|
|
||||||
"0)" if you type ')' as the first character in a line
|
|
||||||
":" if you type ':' after a label or case statement
|
|
||||||
"0#" if you type '#' as the first character in a line
|
|
||||||
"!^F" if you type CTRL-F (which is not inserted)
|
|
||||||
"o" if you type a <CR> anywhere or use the "o" command (not in
|
|
||||||
insert mode!)
|
|
||||||
"O" if you use the "O" command (not in insert mode!)
|
|
||||||
"e" if you type the second 'e' for an "else" at the start of a
|
|
||||||
line
|
|
||||||
|
|
||||||
Characters that can precede each key:
|
|
||||||
! When a '!' precedes the key, Vim will not insert the key but will
|
|
||||||
instead reindent the current line. This allows you to define a
|
|
||||||
command key for reindenting the current line. CTRL-F is the default
|
|
||||||
key for this. Be careful if you define CTRL-I for this because CTRL-I
|
|
||||||
is the ASCII code for <Tab>.
|
|
||||||
* When a '*' precedes the key, Vim will reindent the line before
|
|
||||||
inserting the key. If 'cinkeys' contains "*<Return>", Vim reindents
|
|
||||||
the current line before opening a new line.
|
|
||||||
0 When a zero precedes the key (but appears after '!' or '*') Vim will
|
|
||||||
reindent the line only if the key is the first character you type in
|
|
||||||
the line. When used before "=" Vim will only reindent the line if
|
|
||||||
there is only white space before the word.
|
|
||||||
|
|
||||||
When neither '!' nor '*' precedes the key, Vim reindents the line after you
|
|
||||||
type the key. So ';' sets the indentation of a line which includes the ';'.
|
|
||||||
|
|
||||||
Special key names:
|
|
||||||
<> Angle brackets mean spelled-out names of keys. For example: "<Up>",
|
|
||||||
"<Ins>" (see |key-notation|).
|
|
||||||
^ Letters preceded by a caret (^) are control characters. For example:
|
|
||||||
"^F" is CTRL-F.
|
|
||||||
o Reindent a line when you use the "o" command or when Vim opens a new
|
|
||||||
line below the current one (e.g., when you type <Enter> in insert
|
|
||||||
mode).
|
|
||||||
O Reindent a line when you use the "O" command.
|
|
||||||
e Reindent a line that starts with "else" when you type the second 'e'.
|
|
||||||
: Reindent a line when a ':' is typed which is after a label or case
|
|
||||||
statement. Don't reindent for a ":" in "class::method" for C++. To
|
|
||||||
Reindent for any ":", use "<:>".
|
|
||||||
=word Reindent when typing the last character of "word". "word" may
|
|
||||||
actually be part of another word. Thus "=end" would cause reindenting
|
|
||||||
when typing the "d" in "endif" or "endwhile". But not when typing
|
|
||||||
"bend". Also reindent when completion produces a word that starts
|
|
||||||
with "word". "0=word" reindents when there is only white space before
|
|
||||||
the word.
|
|
||||||
=~word Like =word, but ignore case.
|
|
||||||
|
|
||||||
If you really want to reindent when you type 'o', 'O', 'e', '0', '<', '>',
|
|
||||||
'*', ':' or '!', use "<o>", "<O>", "<e>", "<0>", "<<>", "<>>", "<*>", "<:>" or
|
|
||||||
"<!>", respectively, for those keys.
|
|
||||||
|
|
||||||
For an emacs-style indent mode where lines aren't indented every time you
|
|
||||||
press Enter but only if you press Tab, I suggest:
|
|
||||||
:set cinkeys=0{,0},:,0#,!<Tab>,!^F
|
|
||||||
You might also want to switch off 'autoindent' then.
|
|
||||||
|
|
||||||
Note: If you change the current line's indentation manually, Vim ignores the
|
|
||||||
cindent settings for that line. This prevents vim from reindenting after you
|
|
||||||
have changed the indent by typing <BS>, <Tab>, or <Space> in the indent or
|
|
||||||
used CTRL-T or CTRL-D.
|
|
||||||
|
|
||||||
*cinoptions-values*
|
|
||||||
The 'cinoptions' option sets how Vim performs indentation. In the list below,
|
|
||||||
"N" represents a number of your choice (the number can be negative). When
|
|
||||||
there is an 's' after the number, Vim multiplies the number by 'shiftwidth':
|
|
||||||
"1s" is 'shiftwidth', "2s" is two times 'shiftwidth', etc. You can use a
|
|
||||||
decimal point, too: "-0.5s" is minus half a 'shiftwidth'. The examples below
|
|
||||||
assume a 'shiftwidth' of 4.
|
|
||||||
|
|
||||||
>N Amount added for "normal" indent. Used after a line that should
|
|
||||||
increase the indent (lines starting with "if", an opening brace,
|
|
||||||
etc.). (default 'shiftwidth').
|
|
||||||
|
|
||||||
cino= cino=>2 cino=>2s >
|
|
||||||
if (cond) if (cond) if (cond)
|
|
||||||
{ { {
|
|
||||||
foo; foo; foo;
|
|
||||||
} } }
|
|
||||||
<
|
|
||||||
eN Add N to the prevailing indent inside a set of braces if the
|
|
||||||
opening brace at the End of the line (more precise: is not the
|
|
||||||
first character in a line). This is useful if you want a
|
|
||||||
different indent when the '{' is at the start of the line from
|
|
||||||
when '{' is at the end of the line. (default 0).
|
|
||||||
|
|
||||||
cino= cino=e2 cino=e-2 >
|
|
||||||
if (cond) { if (cond) { if (cond) {
|
|
||||||
foo; foo; foo;
|
|
||||||
} } }
|
|
||||||
else else else
|
|
||||||
{ { {
|
|
||||||
bar; bar; bar;
|
|
||||||
} } }
|
|
||||||
<
|
|
||||||
nN Add N to the prevailing indent for a statement after an "if",
|
|
||||||
"while", etc., if it is NOT inside a set of braces. This is
|
|
||||||
useful if you want a different indent when there is no '{'
|
|
||||||
before the statement from when there is a '{' before it.
|
|
||||||
(default 0).
|
|
||||||
|
|
||||||
cino= cino=n2 cino=n-2 >
|
|
||||||
if (cond) if (cond) if (cond)
|
|
||||||
foo; foo; foo;
|
|
||||||
else else else
|
|
||||||
{ { {
|
|
||||||
bar; bar; bar;
|
|
||||||
} } }
|
|
||||||
<
|
|
||||||
fN Place the first opening brace of a function or other block in
|
|
||||||
column N. This applies only for an opening brace that is not
|
|
||||||
inside other braces and is at the start of the line. What comes
|
|
||||||
after the brace is put relative to this brace. (default 0).
|
|
||||||
|
|
||||||
cino= cino=f.5s cino=f1s >
|
|
||||||
func() func() func()
|
|
||||||
{ { {
|
|
||||||
int foo; int foo; int foo;
|
|
||||||
<
|
|
||||||
{N Place opening braces N characters from the prevailing indent.
|
|
||||||
This applies only for opening braces that are inside other
|
|
||||||
braces. (default 0).
|
|
||||||
|
|
||||||
cino= cino={.5s cino={1s >
|
|
||||||
if (cond) if (cond) if (cond)
|
|
||||||
{ { {
|
|
||||||
foo; foo; foo;
|
|
||||||
<
|
|
||||||
}N Place closing braces N characters from the matching opening
|
|
||||||
brace. (default 0).
|
|
||||||
|
|
||||||
cino= cino={2,}-0.5s cino=}2 >
|
|
||||||
if (cond) if (cond) if (cond)
|
|
||||||
{ { {
|
|
||||||
foo; foo; foo;
|
|
||||||
} } }
|
|
||||||
<
|
|
||||||
^N Add N to the prevailing indent inside a set of braces if the
|
|
||||||
opening brace is in column 0. This can specify a different
|
|
||||||
indent for whole of a function (some may like to set it to a
|
|
||||||
negative number). (default 0).
|
|
||||||
|
|
||||||
cino= cino=^-2 cino=^-s >
|
|
||||||
func() func() func()
|
|
||||||
{ { {
|
|
||||||
if (cond) if (cond) if (cond)
|
|
||||||
{ { {
|
|
||||||
a = b; a = b; a = b;
|
|
||||||
} } }
|
|
||||||
} } }
|
|
||||||
<
|
|
||||||
:N Place case labels N characters from the indent of the switch().
|
|
||||||
(default 'shiftwidth').
|
|
||||||
|
|
||||||
cino= cino=:0 >
|
|
||||||
switch (x) switch(x)
|
|
||||||
{ {
|
|
||||||
case 1: case 1:
|
|
||||||
a = b; a = b;
|
|
||||||
default: default:
|
|
||||||
} }
|
|
||||||
<
|
|
||||||
=N Place statements occurring after a case label N characters from
|
|
||||||
the indent of the label. (default 'shiftwidth').
|
|
||||||
|
|
||||||
cino= cino==10 >
|
|
||||||
case 11: case 11: a = a + 1;
|
|
||||||
a = a + 1; b = b + 1;
|
|
||||||
<
|
|
||||||
lN If N != 0 Vim will align with a case label instead of the
|
|
||||||
statement after it in the same line.
|
|
||||||
|
|
||||||
cino= cino=l1 >
|
|
||||||
switch (a) { switch (a) {
|
|
||||||
case 1: { case 1: {
|
|
||||||
break; break;
|
|
||||||
} }
|
|
||||||
<
|
|
||||||
bN If N != 0 Vim will align a final "break" with the case label,
|
|
||||||
so that case..break looks like a sort of block. (default: 0).
|
|
||||||
|
|
||||||
cino= cino=b1 >
|
|
||||||
switch (x) switch(x)
|
|
||||||
{ {
|
|
||||||
case 1: case 1:
|
|
||||||
a = b; a = b;
|
|
||||||
break; break;
|
|
||||||
|
|
||||||
default: default:
|
|
||||||
a = 0; a = 0;
|
|
||||||
break; break;
|
|
||||||
} }
|
|
||||||
<
|
|
||||||
gN Place C++ scope declarations N characters from the indent of the
|
|
||||||
block they are in. (default 'shiftwidth'). A scope declaration
|
|
||||||
can be "public:", "protected:" or "private:".
|
|
||||||
|
|
||||||
cino= cino=g0 >
|
|
||||||
{ {
|
|
||||||
public: public:
|
|
||||||
a = b; a = b;
|
|
||||||
private: private:
|
|
||||||
} }
|
|
||||||
<
|
|
||||||
hN Place statements occurring after a C++ scope declaration N
|
|
||||||
characters from the indent of the label. (default
|
|
||||||
'shiftwidth').
|
|
||||||
|
|
||||||
cino= cino=h10 >
|
|
||||||
public: public: a = a + 1;
|
|
||||||
a = a + 1; b = b + 1;
|
|
||||||
<
|
|
||||||
pN Parameter declarations for K&R-style function declarations will
|
|
||||||
be indented N characters from the margin. (default
|
|
||||||
'shiftwidth').
|
|
||||||
|
|
||||||
cino= cino=p0 cino=p2s >
|
|
||||||
func(a, b) func(a, b) func(a, b)
|
|
||||||
int a; int a; int a;
|
|
||||||
char b; char b; char b;
|
|
||||||
<
|
|
||||||
tN Indent a function return type declaration N characters from the
|
|
||||||
margin. (default 'shiftwidth').
|
|
||||||
|
|
||||||
cino= cino=t0 cino=t7 >
|
|
||||||
int int int
|
|
||||||
func() func() func()
|
|
||||||
<
|
|
||||||
iN Indent C++ base class declarations and contructor
|
|
||||||
initializations, if they start in a new line (otherwise they
|
|
||||||
are aligned at the right side of the ':').
|
|
||||||
(default 'shiftwidth').
|
|
||||||
|
|
||||||
cino= cino=i0 >
|
|
||||||
class MyClass : class MyClass :
|
|
||||||
public BaseClass public BaseClass
|
|
||||||
{} {}
|
|
||||||
MyClass::MyClass() : MyClass::MyClass() :
|
|
||||||
BaseClass(3) BaseClass(3)
|
|
||||||
{} {}
|
|
||||||
<
|
|
||||||
+N Indent a continuation line (a line that spills onto the next) N
|
|
||||||
additional characters. (default 'shiftwidth').
|
|
||||||
|
|
||||||
cino= cino=+10 >
|
|
||||||
a = b + 9 * a = b + 9 *
|
|
||||||
c; c;
|
|
||||||
<
|
|
||||||
cN Indent comment lines after the comment opener, when there is no
|
|
||||||
other text with which to align, N characters from the comment
|
|
||||||
opener. (default 3). See also |format-comments|.
|
|
||||||
|
|
||||||
cino= cino=c5 >
|
|
||||||
/* /*
|
|
||||||
text. text.
|
|
||||||
*/ */
|
|
||||||
<
|
|
||||||
CN When N is non-zero, indent comment lines by the amount specified
|
|
||||||
with the c flag above even if there is other text behind the
|
|
||||||
comment opener. (default 0).
|
|
||||||
|
|
||||||
cino=c0 cino=c0,C1 >
|
|
||||||
/******** /********
|
|
||||||
text. text.
|
|
||||||
********/ ********/
|
|
||||||
< (Example uses ":set comments& comments-=s1:/* comments^=s0:/*")
|
|
||||||
|
|
||||||
/N Indent comment lines N characters extra. (default 0).
|
|
||||||
cino= cino=/4 >
|
|
||||||
a = b; a = b;
|
|
||||||
/* comment */ /* comment */
|
|
||||||
c = d; c = d;
|
|
||||||
<
|
|
||||||
(N When in unclosed parentheses, indent N characters from the line
|
|
||||||
with the unclosed parentheses. Add a 'shiftwidth' for every
|
|
||||||
unclosed parentheses. When N is 0 or the unclosed parentheses
|
|
||||||
is the first non-white character in its line, line up with the
|
|
||||||
next non-white character after the unclosed parentheses.
|
|
||||||
(default 'shiftwidth' * 2).
|
|
||||||
|
|
||||||
cino= cino=(0 >
|
|
||||||
if (c1 && (c2 || if (c1 && (c2 ||
|
|
||||||
c3)) c3))
|
|
||||||
foo; foo;
|
|
||||||
if (c1 && if (c1 &&
|
|
||||||
(c2 || c3)) (c2 || c3))
|
|
||||||
{ {
|
|
||||||
<
|
|
||||||
uN Same as (N, but for one level deeper. (default 'shiftwidth').
|
|
||||||
|
|
||||||
cino= cino=u2 >
|
|
||||||
if (c123456789 if (c123456789
|
|
||||||
&& (c22345 && (c22345
|
|
||||||
|| c3)) || c3))
|
|
||||||
<
|
|
||||||
UN When N is non-zero, do not ignore the indenting specified by
|
|
||||||
( or u in case that the unclosed parentheses is the first
|
|
||||||
non-white character in its line. (default 0).
|
|
||||||
|
|
||||||
cino= or cino=(s cino=(s,U1 >
|
|
||||||
c = c1 && c = c1 &&
|
|
||||||
( (
|
|
||||||
c2 || c2 ||
|
|
||||||
c3 c3
|
|
||||||
) && c4; ) && c4;
|
|
||||||
<
|
|
||||||
wN When in unclosed parentheses and N is non-zero and either
|
|
||||||
using "(0" or "u0", respectively, or using "U0" and the unclosed
|
|
||||||
parentheses is the first non-white character in its line, line
|
|
||||||
up with the character immediately after the unclosed parentheses
|
|
||||||
rather than the first non-white character. (default 0).
|
|
||||||
|
|
||||||
cino=(0 cino=(0,w1 >
|
|
||||||
if ( c1 if ( c1
|
|
||||||
&& ( c2 && ( c2
|
|
||||||
|| c3)) || c3))
|
|
||||||
foo; foo;
|
|
||||||
<
|
|
||||||
WN When in unclosed parentheses and N is non-zero and either
|
|
||||||
using "(0" or "u0", respectively and the unclosed parentheses is
|
|
||||||
the last non-white character in its line and it is not the
|
|
||||||
closing parentheses, indent the following line N characters
|
|
||||||
relative to the outer context (i.e. start of the line or the
|
|
||||||
next unclosed parentheses). (default: 0).
|
|
||||||
|
|
||||||
cino=(0 cino=(0,W4 >
|
|
||||||
a_long_line( a_long_line(
|
|
||||||
argument, argument,
|
|
||||||
argument); argument);
|
|
||||||
a_short_line(argument, a_short_line(argument,
|
|
||||||
argument); argument);
|
|
||||||
<
|
|
||||||
mN When N is non-zero, line up a line starting with a closing
|
|
||||||
parentheses with the first character of the line with the
|
|
||||||
matching opening parentheses. (default 0).
|
|
||||||
|
|
||||||
cino=(s cino=(s,m1 >
|
|
||||||
c = c1 && ( c = c1 && (
|
|
||||||
c2 || c2 ||
|
|
||||||
c3 c3
|
|
||||||
) && c4; ) && c4;
|
|
||||||
if ( if (
|
|
||||||
c1 && c2 c1 && c2
|
|
||||||
) )
|
|
||||||
foo; foo;
|
|
||||||
<
|
|
||||||
*java-cinoptions* *java-indenting*
|
|
||||||
jN Indent java anonymous classes correctly. The value 'N' is
|
|
||||||
currently unused but must be non-zero (e.g. 'j1'). 'j1' will
|
|
||||||
indent for example the following code snippet correctly: >
|
|
||||||
|
|
||||||
object.add(new ChangeListener() {
|
|
||||||
public void stateChanged(ChangeEvent e) {
|
|
||||||
do_something();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
<
|
|
||||||
)N Vim searches for unclosed parentheses at most N lines away.
|
|
||||||
This limits the time needed to search for parentheses. (default
|
|
||||||
20 lines).
|
|
||||||
|
|
||||||
*N Vim searches for unclosed comments at most N lines away. This
|
|
||||||
limits the time needed to search for the start of a comment.
|
|
||||||
(default 30 lines).
|
|
||||||
|
|
||||||
|
|
||||||
The defaults, spelled out in full, are:
|
|
||||||
cinoptions=>s,e0,n0,f0,{0,}0,^0,:s,=s,l0,gs,hs,ps,ts,+s,c3,C0,(2s,us,
|
|
||||||
\U0,w0,m0,j0,)20,*30
|
|
||||||
|
|
||||||
Vim puts a line in column 1 if:
|
|
||||||
- It starts with '#' (preprocessor directives), if 'cinkeys' contains '#'.
|
|
||||||
- It starts with a label (a keyword followed by ':', other than "case" and
|
|
||||||
"default").
|
|
||||||
- Any combination of indentations causes the line to have less than 0
|
|
||||||
indentation.
|
|
||||||
|
|
||||||
==============================================================================
|
|
||||||
2. Indenting by expression *indent-expression*
|
|
||||||
|
|
||||||
The basics for using flexible indenting are explained in section |30.3| of the
|
|
||||||
user manual.
|
|
||||||
|
|
||||||
If you want to write your own indent file, it must set the 'indentexpr'
|
|
||||||
option. Setting the 'indentkeys' option is often useful. See the
|
|
||||||
$VIMRUNTIME/indent directory for examples.
|
|
||||||
|
|
||||||
|
|
||||||
REMARKS ABOUT SPECIFIC INDENT FILES ~
|
|
||||||
|
|
||||||
|
|
||||||
FORTRAN *fortran-indent*
|
|
||||||
|
|
||||||
Block if, select case, and where constructs are indented. Comments, labelled
|
|
||||||
statements and continuation lines are indented if the Fortran is in free
|
|
||||||
source form, whereas they are not indented if the Fortran is in fixed source
|
|
||||||
form because of the left margin requirements. Hence manual indent corrections
|
|
||||||
will be necessary for labelled statements and continuation lines when fixed
|
|
||||||
source form is being used. For further discussion of the method used for the
|
|
||||||
detection of source format see |fortran-syntax|.
|
|
||||||
|
|
||||||
Do loops ~
|
|
||||||
All do loops are left unindented by default. Do loops can be unstructured in
|
|
||||||
Fortran with (possibly multiple) loops ending on a labelled executable
|
|
||||||
statement of almost arbitrary type. Correct indentation requires
|
|
||||||
compiler-quality parsing. Old code with do loops ending on labelled statements
|
|
||||||
of arbitrary type can be indented with elaborate programs such as Tidy
|
|
||||||
(http://www.unb.ca/chem/ajit/f_tidy.htm). Structured do/continue loops are
|
|
||||||
also left unindented because continue statements are also used for purposes
|
|
||||||
other than ending a do loop. Programs such as Tidy can convert structured
|
|
||||||
do/continue loops to the do/enddo form. Do loops of the do/enddo variety can
|
|
||||||
be indented. If you use only structured loops of the do/enddo form, you should
|
|
||||||
declare this by setting the fortran_do_enddo variable in your .vimrc as
|
|
||||||
follows >
|
|
||||||
|
|
||||||
let fortran_do_enddo=1
|
|
||||||
|
|
||||||
in which case do loops will be indented. If all your loops are of do/enddo
|
|
||||||
type only in, say, .f90 files, then you should set a buffer flag with an
|
|
||||||
autocommand such as >
|
|
||||||
|
|
||||||
au! BufRead,BufNewFile *.f90 let b:fortran_do_enddo=1
|
|
||||||
|
|
||||||
to get do loops indented in .f90 files and left alone in Fortran files with
|
|
||||||
other extensions such as .for.
|
|
||||||
|
|
||||||
|
|
||||||
VERILOG *verilog-indent*
|
|
||||||
|
|
||||||
General block statements such as if, for, case, always, initial, function,
|
|
||||||
specify and begin, etc., are indented. The module block statements (first
|
|
||||||
level blocks) are not indented by default. you can turn on the indent with
|
|
||||||
setting a variable in the .vimrc as follows: >
|
|
||||||
|
|
||||||
let b:verilog_indent_modules = 1
|
|
||||||
|
|
||||||
then the module blocks will be indented. To stop this, remove the variable: >
|
|
||||||
|
|
||||||
:unlet b:verilog_indent_modules
|
|
||||||
|
|
||||||
To set the variable only for Verilog file. The following statements can be
|
|
||||||
used: >
|
|
||||||
|
|
||||||
au BufReadPost * if exists("b:current_syntax")
|
|
||||||
au BufReadPost * if b:current_syntax == "verilog"
|
|
||||||
au BufReadPost * let b:verilog_indent_modules = 1
|
|
||||||
au BufReadPost * endif
|
|
||||||
au BufReadPost * endif
|
|
||||||
|
|
||||||
Furthermore, setting the variable b:verilog_indent_width to change the
|
|
||||||
indenting width (default is 'shiftwidth'): >
|
|
||||||
|
|
||||||
let b:verilog_indent_width = 4
|
|
||||||
let b:verilog_indent_width = &sw * 2
|
|
||||||
|
|
||||||
In addition, you can turn the verbose mode for debug issue: >
|
|
||||||
|
|
||||||
let b:verilog_indent_verbose = 1
|
|
||||||
|
|
||||||
Make sure to do ":set cmdheight=2" first to allow the display of the message.
|
|
||||||
|
|
||||||
vim:tw=78:ts=8:ft=help:norl:
|
|
||||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -1,890 +0,0 @@
|
|||||||
*intro.txt* For Vim version 6.3. Last change: 2004 May 01
|
|
||||||
|
|
||||||
|
|
||||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
|
||||||
|
|
||||||
|
|
||||||
Introduction to Vim *ref* *reference*
|
|
||||||
|
|
||||||
1. Introduction |intro|
|
|
||||||
2. Vim on the internet |internet|
|
|
||||||
3. Credits |credits|
|
|
||||||
4. Notation |notation|
|
|
||||||
5. Modes, introduction |vim-modes-intro|
|
|
||||||
6. Switching from mode to mode |mode-switching|
|
|
||||||
7. The window contents |window-contents|
|
|
||||||
8. Definitions |definitions|
|
|
||||||
|
|
||||||
==============================================================================
|
|
||||||
1. Introduction *intro*
|
|
||||||
|
|
||||||
Vim stands for Vi IMproved. It used to be Vi IMitation, but there are so many
|
|
||||||
improvements that a name change was appropriate. Vim is a text editor which
|
|
||||||
includes almost all the commands from the Unix program "Vi" and a lot of new
|
|
||||||
ones. It is very useful for editing programs and other plain text.
|
|
||||||
All commands are given with the keyboard. This has the advantage that you
|
|
||||||
can keep your fingers on the keyboard and your eyes on the screen. For those
|
|
||||||
who want it, there is mouse support and a GUI version with scrollbars and
|
|
||||||
menus (see |gui.txt|).
|
|
||||||
|
|
||||||
An overview of this manual can be found in the file "help.txt", |help.txt|.
|
|
||||||
It can be accessed from within Vim with the <Help> or <F1> key and with the
|
|
||||||
|:help| command (just type ":help", without the bars or quotes).
|
|
||||||
The 'helpfile' option can be set to the name of the help file, in case it
|
|
||||||
is not located in the default place. You can jump to subjects like with tags:
|
|
||||||
Use CTRL-] to jump to a subject under the cursor, use CTRL-T to jump back.
|
|
||||||
|
|
||||||
Throughout this manual the differences between Vi and Vim are mentioned in
|
|
||||||
curly braces, like this: {Vi does not have on-line help}. See |vi_diff.txt|
|
|
||||||
for a summary of the differences between Vim and Vi.
|
|
||||||
|
|
||||||
This manual refers to Vim on various machines. There may be small differences
|
|
||||||
between different computers and terminals. Besides the remarks given in this
|
|
||||||
document, there is a separate document for each supported system, see
|
|
||||||
|sys-file-list|.
|
|
||||||
|
|
||||||
This manual is a reference for all the Vim commands and options. This is not
|
|
||||||
an introduction to the use of Vi or Vim, it gets a bit complicated here and
|
|
||||||
there. For beginners, there is a hands-on |tutor|. To learn using Vim, read
|
|
||||||
the user manual |usr_toc.txt|.
|
|
||||||
|
|
||||||
*book*
|
|
||||||
There are many books on Vi that contain a section for beginners. There are
|
|
||||||
two books I can recommend:
|
|
||||||
|
|
||||||
"Vim - Vi Improved" by Steve Oualline
|
|
||||||
|
|
||||||
This is the very first book completely dedicated to Vim. It is very good for
|
|
||||||
beginners. The most often used commands are explained with pictures and
|
|
||||||
examples. The less often used commands are also explained, the more advanced
|
|
||||||
features are summarized. There is a comprehensive index and a quick
|
|
||||||
reference. Parts of this book have been included in the user manual
|
|
||||||
|frombook|.
|
|
||||||
Published by New Riders Publishing. ISBN: 0735710015
|
|
||||||
For more information try one of these:
|
|
||||||
http://iccf-holland.org/click5.html
|
|
||||||
http://www.vim.org/iccf/click5.html
|
|
||||||
|
|
||||||
"Learning the Vi editor" by Linda Lamb and Arnold Robbins
|
|
||||||
|
|
||||||
This is a book about Vi that includes a chapter on Vim (in the sixth edition).
|
|
||||||
The first steps in Vi are explained very well. The commands that Vim adds are
|
|
||||||
only briefly mentioned. There is also a German translation.
|
|
||||||
Published by O'Reilly. ISBN: 1-56592-426-6.
|
|
||||||
|
|
||||||
==============================================================================
|
|
||||||
2. Vim on the internet *internet*
|
|
||||||
|
|
||||||
*www* *faq* *FAQ* *distribution* *download*
|
|
||||||
The Vim pages contain the most recent information about Vim. They also
|
|
||||||
contain links to the most recent version of Vim. The FAQ is a list of
|
|
||||||
Frequently Asked Questions. Read this if you have problems.
|
|
||||||
|
|
||||||
VIM home page: http://www.vim.org/
|
|
||||||
VIM FAQ: http://vimdoc.sf.net/
|
|
||||||
Downloading: ftp://ftp.vim.org/pub/vim/MIRRORS
|
|
||||||
|
|
||||||
|
|
||||||
Usenet News group where Vim is discussed: *news* *usenet*
|
|
||||||
comp.editors
|
|
||||||
This group is also for other editors. If you write about Vim, don't forget to
|
|
||||||
mention that.
|
|
||||||
|
|
||||||
*mail-list* *maillist*
|
|
||||||
There are several mailing lists for Vim:
|
|
||||||
<[email protected]>
|
|
||||||
For discussions about using existing versions of Vim: Useful mappings,
|
|
||||||
questions, answers, where to get a specific version, etc.
|
|
||||||
<[email protected]> *vim-dev* *vimdev*
|
|
||||||
For discussions about changing Vim: New features, porting, patches,
|
|
||||||
beta-test versions, etc.
|
|
||||||
<[email protected]> *vim-announce*
|
|
||||||
Announcements about new versions of Vim; also for beta-test versions
|
|
||||||
and ports to different systems.
|
|
||||||
<[email protected]> *vim-multibyte*
|
|
||||||
For discussions about using and improving the multi-byte aspects of
|
|
||||||
Vim.
|
|
||||||
<[email protected]> *vim-mac*
|
|
||||||
For discussions about using and improving the Macintosh version of
|
|
||||||
Vim.
|
|
||||||
|
|
||||||
See http://www.vim.org/maillist.php for the latest information.
|
|
||||||
|
|
||||||
NOTE:
|
|
||||||
- You can only send messages to these lists if you have subscribed!
|
|
||||||
- You need to send the messages from the same location as where you subscribed
|
|
||||||
from (to avoid spam mail).
|
|
||||||
- Maximum message size is 40000 characters.
|
|
||||||
|
|
||||||
*subscribe-maillist*
|
|
||||||
If you want to join, send a message to
|
|
||||||
<[email protected]>
|
|
||||||
Make sure that your "From:" address is correct. Then the list server will
|
|
||||||
give you help on how to subscribe.
|
|
||||||
|
|
||||||
You can retrieve old messages from the maillist software, and an index of
|
|
||||||
messages. Ask vim-help for instructions.
|
|
||||||
|
|
||||||
Archives are kept at: *maillist-archive*
|
|
||||||
http://groups.yahoo.com/group/vim
|
|
||||||
http://groups.yahoo.com/group/vimdev
|
|
||||||
http://groups.yahoo.com/group/vimannounce
|
|
||||||
http://groups.yahoo.com/group/vim-multibyte
|
|
||||||
http://groups.yahoo.com/group/vim-mac
|
|
||||||
|
|
||||||
|
|
||||||
Additional maillists:
|
|
||||||
|
|
||||||
<[email protected]> *french-maillist*
|
|
||||||
Vim list in the French language. Subscribe by sending a message to
|
|
||||||
<[email protected]>
|
|
||||||
Or go to http://groups.yahoo.com/group/vim-fr.
|
|
||||||
|
|
||||||
|
|
||||||
Bug reports: *bugs* *bug-reports* *bugreport.vim*
|
|
||||||
|
|
||||||
Send bug reports to: Vim bugs <[email protected]>
|
|
||||||
This is not a maillist but the message is redirected to the Vim maintainer.
|
|
||||||
Please be brief; all the time that is spent on answering mail is subtracted
|
|
||||||
from the time that is spent on improving Vim! Always give a reproducible
|
|
||||||
example and try to find out which settings or other things influence the
|
|
||||||
appearance of the bug. Try different machines, if possible. Send me patches
|
|
||||||
if you can!
|
|
||||||
|
|
||||||
In case of doubt, use: >
|
|
||||||
:so $VIMRUNTIME/bugreport.vim
|
|
||||||
This will create a file "bugreport.txt" in the current directory, with a lot
|
|
||||||
of information of your environment. Before sending this out, check if it
|
|
||||||
doesn't contain any confidential information!
|
|
||||||
|
|
||||||
*debug-vim*
|
|
||||||
When Vim crashes in one of the test files, and you are using gcc for
|
|
||||||
compilation, here is what you can do to find out exactly where Vim crashes:
|
|
||||||
|
|
||||||
1. Compile Vim with the "-g" option (there is a line in the Makefile for this,
|
|
||||||
which you can uncomment).
|
|
||||||
|
|
||||||
2. Execute these commands (replace "11" with the test that fails): >
|
|
||||||
cd testdir
|
|
||||||
gdb ../vim
|
|
||||||
run -u unix.vim -U NONE -s dotest.in test11.in
|
|
||||||
|
|
||||||
3. Check where Vim crashes, gdb should give a message for this.
|
|
||||||
|
|
||||||
4. Get a stack trace from gdb with this command: >
|
|
||||||
where
|
|
||||||
< You can check out different places in the stack trace with: >
|
|
||||||
frame 3
|
|
||||||
< Replace "3" with one of the numbers in the stack trace.
|
|
||||||
|
|
||||||
*year-2000* *Y2K*
|
|
||||||
Since Vim internally doesn't use dates for editing, there is no year 2000
|
|
||||||
problem to worry about. Vim does use the time in the form of seconds since
|
|
||||||
January 1st 1970. It is used for a time-stamp check of the edited file and
|
|
||||||
the swap file, which is not critical and should only cause warning messages.
|
|
||||||
|
|
||||||
There might be a year 2038 problem, when the seconds don't fit in a 32 bit int
|
|
||||||
anymore. This depends on the compiler, libraries and operating system.
|
|
||||||
Specifically, time_t and the ctime() function are used. And the time_t is
|
|
||||||
stored in four bytes in the swap file. But that's only used for printing a
|
|
||||||
file date/time for recovery, it will never affect normal editing.
|
|
||||||
|
|
||||||
The Vim strftime() function directly uses the strftime() system function.
|
|
||||||
localtime() uses the time() system function. getftime() uses the time
|
|
||||||
returned by the stat() system function. If your system libraries are year
|
|
||||||
2000 compliant, Vim is too.
|
|
||||||
|
|
||||||
The user may create scripts for Vim that use external commands. These might
|
|
||||||
introduce Y2K problems, but those are not really part of Vim itself.
|
|
||||||
|
|
||||||
==============================================================================
|
|
||||||
3. Credits *credits* *author*
|
|
||||||
|
|
||||||
Most of Vim was written by Bram Moolenaar <[email protected]>.
|
|
||||||
|
|
||||||
Parts of the documentation come from several Vi manuals, written by:
|
|
||||||
W.N. Joy
|
|
||||||
Alan P.W. Hewett
|
|
||||||
Mark Horton
|
|
||||||
|
|
||||||
The Vim editor is based on Stevie and includes (ideas from) other software,
|
|
||||||
worked on by the people mentioned here. Other people helped by sending me
|
|
||||||
patches, suggestions and giving feedback about what is good and bad in Vim.
|
|
||||||
|
|
||||||
Vim would never have become what it is now, without the help of these people!
|
|
||||||
|
|
||||||
Ron Aaron Win32 GUI changes
|
|
||||||
Zoltan Arpadffy work on VMS port
|
|
||||||
Tony Andrews Stevie
|
|
||||||
Gert van Antwerpen changes for DJGPP on MS-DOS
|
|
||||||
Berkeley DB(3) ideas for swap file implementation
|
|
||||||
Keith Bostic Nvi
|
|
||||||
Walter Briscoe Makefile updates, various patches
|
|
||||||
Ralf Brown SPAWNO library for MS-DOS
|
|
||||||
Robert Colon many useful remarks
|
|
||||||
Marcin Dalecki GTK+ GUI port, toolbar icons, gettext()
|
|
||||||
Kayhan Demirel sent me news in Uganda
|
|
||||||
Chris & John Downey xvi (ideas for multi-windows version)
|
|
||||||
Henk Elbers first VMS port
|
|
||||||
Eric Fischer Mac port, 'cindent', and other improvements
|
|
||||||
Benji Fisher Answering lots of user questions
|
|
||||||
Bill Foster Athena GUI port
|
|
||||||
Loic Grenie xvim (ideas for multi windows version)
|
|
||||||
Sven Guckes Vim promotor and previous WWW page maintainer
|
|
||||||
Darren Hiebert Exuberant ctags
|
|
||||||
Bruce Hunsaker improvements for VMS port
|
|
||||||
Andy Kahn Cscope support, GTK+ GUI port
|
|
||||||
Oezguer Kesim Maintainer of Vim Mailing Lists
|
|
||||||
Axel Kielhorn work on the Macintosh port
|
|
||||||
Steve Kirkendall Elvis
|
|
||||||
Roger Knobbe original port to Windows NT
|
|
||||||
Sergey Laskavy Vim's help from Moscow
|
|
||||||
Felix von Leitner Maintainer of Vim Mailing Lists
|
|
||||||
David Leonard Port of Python extensions to Unix
|
|
||||||
Avner Lottem Edit in right-to-left windows
|
|
||||||
Flemming Madsen X11 client-server, various features and patches
|
|
||||||
MicroSoft Gave me a copy of DevStudio to compile Vim with
|
|
||||||
Paul Moore Python interface extensions, many patches
|
|
||||||
Katsuhito Nagano Work on multi-byte versions
|
|
||||||
Sung-Hyun Nam Work on multi-byte versions
|
|
||||||
Vince Negri Win32 GUI and generic console enhancements
|
|
||||||
Steve Oualline Author of the first Vim book |frombook|
|
|
||||||
George V. Reilly Win32 port, Win32 GUI start-off
|
|
||||||
Stephen Riehm bug collector
|
|
||||||
Stefan Roemer various patches and help to users
|
|
||||||
Ralf Schandl IBM OS/390 port
|
|
||||||
Olaf Seibert DICE and BeBox version, regexp improvements
|
|
||||||
Mortaza Shiran Farsi patches
|
|
||||||
Peter da Silva termlib
|
|
||||||
Paul Slootman OS/2 port
|
|
||||||
Henry Spencer regular expressions
|
|
||||||
Dany St-Amant Macintosh port
|
|
||||||
Tim Thompson Stevie
|
|
||||||
G. R. (Fred) Walter Stevie
|
|
||||||
Sven Verdoolaege Perl interface
|
|
||||||
Robert Webb Command-line completion, GUI versions, and
|
|
||||||
lots of patches
|
|
||||||
Ingo Wilken Tcl interface
|
|
||||||
Mike Williams PostScript printing
|
|
||||||
Juergen Weigert Lattice version, AUX improvements, UNIX and
|
|
||||||
MS-DOS ports, autoconf
|
|
||||||
Stefan 'Sec' Zehl Maintainer of vim.org
|
|
||||||
|
|
||||||
I wish to thank all the people that sent me bug reports and suggestions. The
|
|
||||||
list is too long to mention them all here. Vim would not be the same without
|
|
||||||
the ideas from all these people: They keep Vim alive!
|
|
||||||
|
|
||||||
|
|
||||||
In this documentation there are several references to other versions of Vi:
|
|
||||||
*Vi*
|
|
||||||
Vi "the original". Without further remarks this is the version
|
|
||||||
of Vi that appeared in Sun OS 4.x. ":version" returns
|
|
||||||
"Version 3.7, 6/7/85". Sometimes other versions are referred
|
|
||||||
to. Only runs under Unix. Source code only available with a
|
|
||||||
license. More information on Vi can be found through:
|
|
||||||
http://vi-editor.org [doesn't currently work...]
|
|
||||||
*Posix*
|
|
||||||
Posix From the IEEE standard 1003.2, Part 2: Shell and utilities.
|
|
||||||
Generally known as "Posix". This is a textual description of
|
|
||||||
how Vi is supposed to work.
|
|
||||||
The version used is a draft from beginning 1996, so all remarks are
|
|
||||||
"expected to comply to" this. Anything can change though...
|
|
||||||
*Nvi*
|
|
||||||
Nvi The "New" Vi. The version of Vi that comes with BSD 4.4 and FreeBSD.
|
|
||||||
Very good compatibility with the original Vi, with a few extensions.
|
|
||||||
The version used is 1.79. ":version" returns "Version 1.79
|
|
||||||
(10/23/96)". There has been no release the last few years, although
|
|
||||||
there is a development version 1.81.
|
|
||||||
Source code is freely available.
|
|
||||||
*Elvis*
|
|
||||||
Elvis Another Vi clone, made by Steve Kirkendall. Very compact but isn't
|
|
||||||
as flexible as Vim.
|
|
||||||
The version used is 2.1. It is still being developed. Source code is
|
|
||||||
freely available.
|
|
||||||
|
|
||||||
==============================================================================
|
|
||||||
4. Notation *notation*
|
|
||||||
|
|
||||||
When syntax highlighting is used to read this, text that is not typed
|
|
||||||
literally is often highlighted with the Special group. These are items in [],
|
|
||||||
{} and <>, and CTRL-X.
|
|
||||||
|
|
||||||
Note that Vim uses all possible characters in commands. Sometimes the [], {}
|
|
||||||
and <> are part of what you type, the context should make this clear.
|
|
||||||
|
|
||||||
|
|
||||||
[] Characters in square brackets are optional.
|
|
||||||
|
|
||||||
*count* *[count]* *E489*
|
|
||||||
[count] An optional number that may precede the command to multiply
|
|
||||||
or iterate the command. If no number is given, a count of one
|
|
||||||
is used, unless otherwise noted. Note that in this manual the
|
|
||||||
[count] is not mentioned in the description of the command,
|
|
||||||
but only in the explanation. This was done to make the
|
|
||||||
commands easier to look up. If the 'showcmd' option is on,
|
|
||||||
the (partially) entered count is shown at the bottom of the
|
|
||||||
window. You can use <Del> to erase the last digit (|N<Del>|).
|
|
||||||
|
|
||||||
*[quotex]*
|
|
||||||
["x] An optional register designation where text can be stored.
|
|
||||||
See |registers|. The x is a single character between 'a' and
|
|
||||||
'z' or 'A' and 'Z' or '"', and in some cases (with the put
|
|
||||||
command) between '0' and '9', '%', '#', or others. The
|
|
||||||
uppercase and lowercase letter designate the same register,
|
|
||||||
but the lowercase letter is used to overwrite the previous
|
|
||||||
register contents, while the uppercase letter is used to
|
|
||||||
append to the previous register contents. Without the ""x" or
|
|
||||||
with """" the stored text is put into the unnamed register.
|
|
||||||
|
|
||||||
*{}*
|
|
||||||
{} Curly braces denote parts of the command which must appear,
|
|
||||||
but which can take a number of different values. The
|
|
||||||
differences between Vim and Vi are also given in curly braces
|
|
||||||
(this will be clear from the context).
|
|
||||||
|
|
||||||
*{char1-char2}*
|
|
||||||
{char1-char2} A single character from the range char1 to char2. For
|
|
||||||
example: {a-z} is a lowercase letter. Multiple ranges may be
|
|
||||||
concatenated. For example, {a-zA-Z0-9} is any alphanumeric
|
|
||||||
character.
|
|
||||||
|
|
||||||
*{motion}*
|
|
||||||
{motion} A command that moves the cursor. These are explained in
|
|
||||||
|motion.txt|. Examples:
|
|
||||||
w to start of next word
|
|
||||||
b to begin of current word
|
|
||||||
4j four lines down
|
|
||||||
/The<CR> to next occurrence of "The"
|
|
||||||
This is used after an |operator| command to move over the text
|
|
||||||
that is to be operated upon.
|
|
||||||
- If the motion includes a count and the operator also had a
|
|
||||||
count, the two counts are multiplied. For example: "2d3w"
|
|
||||||
deletes six words.
|
|
||||||
- The motion can be backwards, e.g. "db" to delete to the
|
|
||||||
start of the word.
|
|
||||||
- The motion can also be a mouse click. The mouse is not
|
|
||||||
supported in every terminal though.
|
|
||||||
- The ":omap" command can be used to map characters while an
|
|
||||||
operator is pending.
|
|
||||||
- Ex commands can be used to move the cursor. This can be
|
|
||||||
used to call a function that does some complicated motion.
|
|
||||||
The motion is always characterwise exclusive, no matter
|
|
||||||
what ":" command is used. This means it's impossible to
|
|
||||||
include the last character of a line without the line break
|
|
||||||
(unless 'virtualedit' is set).
|
|
||||||
If the Ex command changes the text before where the operator
|
|
||||||
start or jumps to another buffer the result is
|
|
||||||
unpredictable. It is possible to change the text further
|
|
||||||
down. Jumping to another buffer is possible if the current
|
|
||||||
buffer is not unloaded.
|
|
||||||
|
|
||||||
*{Visual}*
|
|
||||||
{Visual} A selected text area. It is started with the "v", "V", or
|
|
||||||
CTRL-V command, then any cursor movement command can be used
|
|
||||||
to change the end of the selected text.
|
|
||||||
This is used before an |operator| command to highlight the
|
|
||||||
text that is to be operated upon.
|
|
||||||
See |Visual-mode|.
|
|
||||||
|
|
||||||
*<character>*
|
|
||||||
<character> A special character from the table below, optionally with
|
|
||||||
modifiers, or a single ASCII character with modifiers.
|
|
||||||
|
|
||||||
*'character'*
|
|
||||||
'c' A single ASCII character.
|
|
||||||
|
|
||||||
*CTRL-{char}*
|
|
||||||
CTRL-{char} {char} typed as a control character; that is, typing {char}
|
|
||||||
while holding the CTRL key down. The case of {char} does not
|
|
||||||
matter; thus CTRL-A and CTRL-a are equivalent. But on some
|
|
||||||
terminals, using the SHIFT key will produce another code,
|
|
||||||
don't use it then.
|
|
||||||
|
|
||||||
*'option'*
|
|
||||||
'option' An option, or parameter, that can be set to a value, is
|
|
||||||
enclosed in single quotes. See |options|.
|
|
||||||
|
|
||||||
*quotecommandquote*
|
|
||||||
"command" A reference to a command that you can type is enclosed in
|
|
||||||
double quotes.
|
|
||||||
|
|
||||||
*key-notation* *key-codes* *keycodes*
|
|
||||||
These names for keys are used in the documentation. They can also be used
|
|
||||||
with the ":map" command (insert the key name by pressing CTRL-K and then the
|
|
||||||
key you want the name for).
|
|
||||||
|
|
||||||
notation meaning equivalent decimal value(s) ~
|
|
||||||
-----------------------------------------------------------------------
|
|
||||||
<Nul> zero CTRL-@ 0 (stored as 10) *<Nul>*
|
|
||||||
<BS> backspace CTRL-H 8 *backspace*
|
|
||||||
<Tab> tab CTRL-I 9 *tab* *Tab*
|
|
||||||
*linefeed*
|
|
||||||
<NL> linefeed CTRL-J 10 (used for <Nul>)
|
|
||||||
<FF> formfeed CTRL-L 12 *formfeed*
|
|
||||||
<CR> carriage return CTRL-M 13 *carriage-return*
|
|
||||||
<Return> same as <CR> *<Return>*
|
|
||||||
<Enter> same as <CR> *<Enter>*
|
|
||||||
<Esc> escape CTRL-[ 27 *escape* *<Esc>*
|
|
||||||
<Space> space 32 *space*
|
|
||||||
<lt> less-than < 60 *<lt>*
|
|
||||||
<Bslash> backslash \ 92 *backslash* *<Bslash>*
|
|
||||||
<Bar> vertical bar | 124 *<Bar>*
|
|
||||||
<Del> delete 127
|
|
||||||
<CSI> command sequence intro ALT-Esc 155 *<CSI>*
|
|
||||||
<xCSI> CSI when typed in the GUI *<xCSI>*
|
|
||||||
|
|
||||||
<EOL> end-of-line (can be <CR>, <LF> or <CR><LF>,
|
|
||||||
depends on system and 'fileformat') *<EOL>*
|
|
||||||
|
|
||||||
<Up> cursor-up *cursor-up* *cursor_up*
|
|
||||||
<Down> cursor-down *cursor-down* *cursor_down*
|
|
||||||
<Left> cursor-left *cursor-left* *cursor_left*
|
|
||||||
<Right> cursor-right *cursor-right* *cursor_right*
|
|
||||||
<S-Up> shift-cursor-up
|
|
||||||
<S-Down> shift-cursor-down
|
|
||||||
<S-Left> shift-cursor-left
|
|
||||||
<S-Right> shift-cursor-right
|
|
||||||
<C-Left> control-cursor-left
|
|
||||||
<C-Right> control-cursor-right
|
|
||||||
<F1> - <F12> function keys 1 to 12 *function_key* *function-key*
|
|
||||||
<S-F1> - <S-F12> shift-function keys 1 to 12 *<S-F1>*
|
|
||||||
<Help> help key
|
|
||||||
<Undo> undo key
|
|
||||||
<Insert> insert key
|
|
||||||
<Home> home *home*
|
|
||||||
<End> end *end*
|
|
||||||
<PageUp> page-up *page_up* *page-up*
|
|
||||||
<PageDown> page-down *page_down* *page-down*
|
|
||||||
<kHome> keypad home (upper left) *keypad-home*
|
|
||||||
<kEnd> keypad end (lower left) *keypad-end*
|
|
||||||
<kPageUp> keypad page-up (upper right) *keypad-page-up*
|
|
||||||
<kPageDown> keypad page-down (lower right) *keypad-page-down*
|
|
||||||
<kPlus> keypad + *keypad-plus*
|
|
||||||
<kMinus> keypad - *keypad-minus*
|
|
||||||
<kMultiply> keypad * *keypad-multiply*
|
|
||||||
<kDivide> keypad / *keypad-divide*
|
|
||||||
<kEnter> keypad Enter *keypad-enter*
|
|
||||||
<kPoint> keypad Decimal point *keypad-point*
|
|
||||||
<k0> - <k9> keypad 0 to 9 *keypad-0* *keypad-9*
|
|
||||||
<S-...> shift-key *shift* *<S-*
|
|
||||||
<C-...> control-key *control* *ctrl* *<C-*
|
|
||||||
<M-...> alt-key or meta-key *meta* *alt* *<M-*
|
|
||||||
<A-...> same as <M-...> *<A-*
|
|
||||||
<D-...> command-key (Macintosh only) *<D-*
|
|
||||||
<t_xx> key with "xx" entry in termcap
|
|
||||||
-----------------------------------------------------------------------
|
|
||||||
|
|
||||||
Note: The shifted cursor keys, the help key, and the undo key are only
|
|
||||||
available on a few terminals. On the Amiga, shifted function key 10 produces
|
|
||||||
a code (CSI) that is also used by key sequences. It will be recognized only
|
|
||||||
after typing another key.
|
|
||||||
|
|
||||||
Note: There are two codes for the delete key. 127 is the decimal ASCII value
|
|
||||||
for the delete key, which is always recognized. Some delete keys send another
|
|
||||||
value, in which case this value is obtained from the termcap entry "kD". Both
|
|
||||||
values have the same effect. Also see |:fixdel|.
|
|
||||||
|
|
||||||
Note: The keypad keys are used in the same way as the corresponding "normal"
|
|
||||||
keys. For example, <kHome> has the same effect as <Home>. If a keypad key
|
|
||||||
sends the same raw key code as it non-keypad equivalent, it will be recognized
|
|
||||||
as the non-keypad code. For example, when <kHome> sends the same code as
|
|
||||||
<Home>, when pressing <kHome> Vim will think <Home> was pressed. Mapping
|
|
||||||
<kHome> will not work then.
|
|
||||||
|
|
||||||
*<>*
|
|
||||||
Examples are often given in the <> notation. Sometimes this is just to make
|
|
||||||
clear what you need to type, but often it can be typed literally, e.g., with
|
|
||||||
the ":map" command. The rules are:
|
|
||||||
1. Any printable characters are typed directly, except backslash and '<'
|
|
||||||
2. A backslash is represented with "\\", double backslash, or "<Bslash>".
|
|
||||||
3. A real '<' is represented with "\<" or "<lt>". When there is no
|
|
||||||
confusion possible, a '<' can be used directly.
|
|
||||||
4. "<key>" means the special key typed. This is the notation explained in
|
|
||||||
the table above. A few examples:
|
|
||||||
<Esc> Escape key
|
|
||||||
<C-G> CTRL-G
|
|
||||||
<Up> cursor up key
|
|
||||||
<C-LeftMouse> Control- left mouse click
|
|
||||||
<S-F11> Shifted function key 11
|
|
||||||
<M-a> Meta- a ('a' with bit 8 set)
|
|
||||||
<M-A> Meta- A ('A' with bit 8 set)
|
|
||||||
<t_kd> "kd" termcap entry (cursor down key)
|
|
||||||
|
|
||||||
If you want to use the full <> notation in Vim, you have to make sure the '<'
|
|
||||||
flag is excluded from 'cpoptions' (when 'compatible' is not set, it already is
|
|
||||||
by default). >
|
|
||||||
:set cpo-=<
|
|
||||||
The <> notation uses <lt> to escape the special meaning of key names. Using a
|
|
||||||
backslash also works, but only when 'cpoptions' does not include the 'B' flag.
|
|
||||||
|
|
||||||
Examples for mapping CTRL-H to the six characters "<Home>": >
|
|
||||||
:imap <C-H> \<Home>
|
|
||||||
:imap <C-H> <lt>Home>
|
|
||||||
The first one only works when the 'B' flag is not in 'cpoptions'. The second
|
|
||||||
one always works.
|
|
||||||
To get a literal "<lt>" in a mapping: >
|
|
||||||
:map <C-L> <lt>lt>
|
|
||||||
|
|
||||||
For mapping, abbreviation and menu commands you can then copy-paste the
|
|
||||||
examples and use them directly. Or type them literally, including the '<' and
|
|
||||||
'>' characters. This does NOT work for other commands, like ":set" and
|
|
||||||
":autocmd"!
|
|
||||||
|
|
||||||
==============================================================================
|
|
||||||
5. Modes, introduction *vim-modes-intro* *vim-modes*
|
|
||||||
|
|
||||||
Vim has six BASIC modes:
|
|
||||||
|
|
||||||
*Normal* *Normal-mode* *command-mode*
|
|
||||||
Normal mode In Normal mode you can enter all the normal editor
|
|
||||||
commands. If you start the editor you are in this
|
|
||||||
mode (unless you have set the 'insertmode' option,
|
|
||||||
see below). This is also known as command mode.
|
|
||||||
|
|
||||||
Visual mode This is like Normal mode, but the movement commands
|
|
||||||
extend a highlighted area. When a non-movement
|
|
||||||
command is used, it is executed for the highlighted
|
|
||||||
area. See |Visual-mode|.
|
|
||||||
If the 'showmode' option is on "-- VISUAL --" is shown
|
|
||||||
at the bottom of the window.
|
|
||||||
|
|
||||||
Select mode This looks most like the MS-Windows selection mode.
|
|
||||||
Typing a printable character deletes the selection
|
|
||||||
and starts Insert mode. See |Select-mode|.
|
|
||||||
If the 'showmode' option is on "-- SELECT --" is shown
|
|
||||||
at the bottom of the window.
|
|
||||||
|
|
||||||
Insert mode In Insert mode the text you type is inserted into the
|
|
||||||
buffer. See |Insert-mode|.
|
|
||||||
If the 'showmode' option is on "-- INSERT --" is shown
|
|
||||||
at the bottom of the window.
|
|
||||||
|
|
||||||
Command-line mode In Command-line mode (also called Cmdline mode) you
|
|
||||||
Cmdline mode can enter one line of text at the bottom of the
|
|
||||||
window. This is for the Ex commands, ":", the pattern
|
|
||||||
search commands, "?" and "/", and the filter command,
|
|
||||||
"!". |Cmdline-mode|
|
|
||||||
|
|
||||||
Ex mode Like Command-line mode, but after entering a command
|
|
||||||
you remain in Ex mode. Very limited editing of the
|
|
||||||
command line. |Ex-mode|
|
|
||||||
|
|
||||||
There are five ADDITIONAL modes. These are variants of the BASIC modes:
|
|
||||||
|
|
||||||
*Operator-pending* *Operator-pending-mode*
|
|
||||||
Operator-pending mode This is like Normal mode, but after an operator
|
|
||||||
command has started, and Vim is waiting for a {motion}
|
|
||||||
to specify the text that the operator will work on.
|
|
||||||
|
|
||||||
Replace mode Replace mode is a special case of Insert mode. You
|
|
||||||
can do the same things as in Insert mode, but for
|
|
||||||
each character you enter, one character of the existing
|
|
||||||
text is deleted. See |Replace-mode|.
|
|
||||||
If the 'showmode' option is on "-- REPLACE --" is
|
|
||||||
shown at the bottom of the window.
|
|
||||||
|
|
||||||
Insert Normal mode Entered when CTRL-O given in Insert mode. This is
|
|
||||||
like Normal mode, but after executing one command Vim
|
|
||||||
returns to Insert mode.
|
|
||||||
If the 'showmode' option is on "-- (insert) --" is
|
|
||||||
shown at the bottom of the window.
|
|
||||||
|
|
||||||
Insert Visual mode Entered when starting a Visual selection from Insert
|
|
||||||
mode, e.g., by using CTRL-O and then "v", "V" or
|
|
||||||
CTRL-V. When the Visual selection ends, Vim returns
|
|
||||||
to Insert mode.
|
|
||||||
If the 'showmode' option is on "-- (insert) VISUAL --"
|
|
||||||
is shown at the bottom of the window.
|
|
||||||
|
|
||||||
Insert Select mode Entered when starting Select mode from Insert mode.
|
|
||||||
E.g., by dragging the mouse or <S-Right>.
|
|
||||||
When the Select mode ends, Vim returns to Insert mode.
|
|
||||||
If the 'showmode' option is on "-- (insert) SELECT --"
|
|
||||||
is shown at the bottom of the window.
|
|
||||||
|
|
||||||
==============================================================================
|
|
||||||
6. Switching from mode to mode *mode-switching*
|
|
||||||
|
|
||||||
If for any reason you do not know which mode you are in, you can always get
|
|
||||||
back to Normal mode by typing <Esc> twice. This doesn't work for Ex mode
|
|
||||||
though, use ":visual".
|
|
||||||
You will know you are back in Normal mode when you see the screen flash or
|
|
||||||
hear the bell after you type <Esc>. However, when pressing <Esc> after using
|
|
||||||
CTRL-O in Insert mode you get a beep but you are still in Insert mode, type
|
|
||||||
<Esc> again.
|
|
||||||
|
|
||||||
*i_esc*
|
|
||||||
TO mode ~
|
|
||||||
Normal Visual Select Insert Replace Cmd-line Ex ~
|
|
||||||
FROM mode ~
|
|
||||||
Normal v V ^V *4 *1 R : / ? ! Q
|
|
||||||
Visual *2 ^G c C -- : --
|
|
||||||
Select *5 ^O ^G *6 -- -- --
|
|
||||||
Insert <Esc> -- -- <Insert> -- --
|
|
||||||
Replace <Esc> -- -- <Insert> -- --
|
|
||||||
Command-line *3 -- -- :start -- --
|
|
||||||
Ex :vi -- -- -- -- --
|
|
||||||
|
|
||||||
- NA
|
|
||||||
-- not possible
|
|
||||||
|
|
||||||
*1 Go from Normal mode to Insert mode by giving the command "i", "I", "a",
|
|
||||||
"A", "o", "O", "c", "C", "s" or S".
|
|
||||||
*2 Go from Visual mode to Normal mode by giving a non-movement command, which
|
|
||||||
causes the command to be executed, or by hitting <Esc> "v", "V" or "CTRL-V"
|
|
||||||
(see |v_v|), which just stops Visual mode without side effects.
|
|
||||||
*3 Go from Command-line mode to Normal mode by:
|
|
||||||
- Hitting <CR> or <NL>, which causes the entered command to be executed.
|
|
||||||
- Deleting the complete line (e.g., with CTRL-U) and giving a final <BS>.
|
|
||||||
- Hitting CTRL-C or <Esc>, which quits the command-line without executing
|
|
||||||
the command.
|
|
||||||
In the last case <Esc> may be the character defined with the 'wildchar'
|
|
||||||
option, in which case it will start command-line completion. You can
|
|
||||||
ignore that and type <Esc> again. {Vi: when hitting <Esc> the command-line
|
|
||||||
is executed. This is unexpected for most people; therefore it was changed
|
|
||||||
in Vim. But when the <Esc> is part of a mapping, the command-line is
|
|
||||||
executed. If you want the Vi behaviour also when typing <Esc>, use ":cmap
|
|
||||||
^V<Esc> ^V^M"}
|
|
||||||
*4 Go from Normal to Select mode by:
|
|
||||||
- use the mouse to select text while 'selectmode' contains "mouse"
|
|
||||||
- use a non-printable command to move the cursor while keeping the Shift
|
|
||||||
key pressed, and the 'selectmode' option contains "key"
|
|
||||||
- use "v", "V" or "CTRL-V" while 'selectmode' contains "cmd"
|
|
||||||
- use "gh", "gH" or "g CTRL-H" |g_CTRL-H|
|
|
||||||
*5 Go from Select mode to Normal mode by using a non-printable command to move
|
|
||||||
the cursor, without keeping the Shift key pressed.
|
|
||||||
*6 Go from Select mode to Insert mode by typing a printable character. The
|
|
||||||
selection is deleted and the character is inserted.
|
|
||||||
|
|
||||||
If the 'insertmode' option is on, editing a file will start in Insert mode.
|
|
||||||
|
|
||||||
*CTRL-\_CTRL-N* *i_CTRL-\_CTRL-N* *c_CTRL-\_CTRL-N* *v_CTRL-\_CTRL-N*
|
|
||||||
Additionally the command CTRL-\ CTRL-N or <C-\><C-N> can be used to go to
|
|
||||||
Normal mode from any other mode. This can be used to make sure Vim is in
|
|
||||||
Normal mode, without causing a beep like <Esc> would. However, this does not
|
|
||||||
work in Ex mode. When used after a command that takes an argument, such as
|
|
||||||
|f| or |m|, the timeout set with 'ttimeoutlen' applies.
|
|
||||||
|
|
||||||
*CTRL-\_CTRL-G* *i_CTRL-\_CTRL-G* *c_CTRL-\_CTRL-G* *v_CTRL-\_CTRL-G*
|
|
||||||
The command CTRL-\ CTRL-G or <C-\><C-G> can be used to go to Insert mode when
|
|
||||||
'insertmode' is set. Otherwise it goes to Normal mode. This can be used to
|
|
||||||
make sure Vim is in the mode indicated by 'insertmode', without knowing in
|
|
||||||
what mode Vim currently is.
|
|
||||||
|
|
||||||
*Q* *mode-Ex* *Ex-mode* *Ex* *EX* *E501*
|
|
||||||
Q Switch to "Ex" mode. This is a bit like typing ":"
|
|
||||||
commands one after another, except:
|
|
||||||
- You don't have to keep pressing ":".
|
|
||||||
- The screen doesn't get updated after each command.
|
|
||||||
- There is no normal command-line editing.
|
|
||||||
- Mappings and abbreviations are not used.
|
|
||||||
In fact, you are editing the lines with the "standard"
|
|
||||||
line-input editing commands (<Del> or <BS> to erase,
|
|
||||||
CTRL-U to kill the whole line).
|
|
||||||
Vim will enter this mode by default if it's invoked as
|
|
||||||
"ex" on the command-line.
|
|
||||||
Use the ":vi" command |:visual| to exit "Ex" mode.
|
|
||||||
Note: In older versions of Vim "Q" formatted text,
|
|
||||||
that is now done with |gq|. But if you use the
|
|
||||||
|vimrc_example.vim| script "Q" works like "gq".
|
|
||||||
|
|
||||||
*gQ*
|
|
||||||
gQ Switch to "Ex" mode, but really behave like typing ":"
|
|
||||||
commands after another. All command line editing,
|
|
||||||
completion etc. is available.
|
|
||||||
Use the ":vi" command |:visual| to exit "Ex" mode.
|
|
||||||
{not in Vi}
|
|
||||||
|
|
||||||
==============================================================================
|
|
||||||
7. The window contents *window-contents*
|
|
||||||
|
|
||||||
In Normal mode and Insert/Replace mode the screen window will show the current
|
|
||||||
contents of the buffer: What You See Is What You Get. There are two
|
|
||||||
exceptions:
|
|
||||||
- When the 'cpoptions' option contains '$', and the change is within one line,
|
|
||||||
the text is not directly deleted, but a '$' is put at the last deleted
|
|
||||||
character.
|
|
||||||
- When inserting text in one window, other windows on the same text are not
|
|
||||||
updated until the insert is finished.
|
|
||||||
{Vi: The screen is not always updated on slow terminals}
|
|
||||||
|
|
||||||
Lines longer than the window width will wrap, unless the 'wrap' option is off
|
|
||||||
(see below). The 'linebreak' option can be set to wrap at a blank character.
|
|
||||||
|
|
||||||
If the window has room after the last line of the buffer, Vim will show '~' in
|
|
||||||
the first column of the last lines in the window, like this: >
|
|
||||||
|
|
||||||
+-----------------------+
|
|
||||||
|some line |
|
|
||||||
|last line |
|
|
||||||
|~ |
|
|
||||||
|~ |
|
|
||||||
+-----------------------+
|
|
||||||
|
|
||||||
Thus the '~' lines indicate that the end of the buffer was reached.
|
|
||||||
|
|
||||||
If the last line in a window doesn't fit, Vim will indicate this with a '@' in
|
|
||||||
the first column of the last lines in the window, like this: >
|
|
||||||
|
|
||||||
+-----------------------+
|
|
||||||
|first line |
|
|
||||||
|second line |
|
|
||||||
|@ |
|
|
||||||
|@ |
|
|
||||||
+-----------------------+
|
|
||||||
|
|
||||||
Thus the '@' lines indicate that there is a line that doesn't fit in the
|
|
||||||
window.
|
|
||||||
|
|
||||||
When the "lastline" flag is present in the 'display' option, you will not see
|
|
||||||
'@' characters at the left side of window. If the last line doesn't fit
|
|
||||||
completely, only the part that fits is shown, and the last three characters of
|
|
||||||
the last line are replaced with "@@@", like this: >
|
|
||||||
|
|
||||||
+-----------------------+
|
|
||||||
|first line |
|
|
||||||
|second line |
|
|
||||||
|a very long line that d|
|
|
||||||
|oesn't fit in the wi@@@|
|
|
||||||
+-----------------------+
|
|
||||||
|
|
||||||
If there is a single line that is too long to fit in the window, this is a
|
|
||||||
special situation. Vim will show only part of the line, around where the
|
|
||||||
cursor is. There are no special characters shown, so that you can edit all
|
|
||||||
parts of this line.
|
|
||||||
{Vi: gives an "internal error" on lines that do not fit in the window}
|
|
||||||
|
|
||||||
The '@' occasion in the 'highlight' option can be used to set special
|
|
||||||
highlighting for the '@' and '~' characters. This makes it possible to
|
|
||||||
distinguish them from real characters in the buffer.
|
|
||||||
|
|
||||||
The 'showbreak' option contains the string to put in front of wrapped lines.
|
|
||||||
|
|
||||||
*wrap-off*
|
|
||||||
If the 'wrap' option is off, long lines will not wrap. Only the part that
|
|
||||||
fits on the screen is shown. If the cursor is moved to a part of the line
|
|
||||||
that is not shown, the screen is scrolled horizontally. The advantage of
|
|
||||||
this method is that columns are shown as they are and lines that cannot fit
|
|
||||||
on the screen can be edited. The disadvantage is that you cannot see all the
|
|
||||||
characters of a line at once. The 'sidescroll' option can be set to the
|
|
||||||
minimal number of columns to scroll. {Vi: has no 'wrap' option}
|
|
||||||
|
|
||||||
All normal ASCII characters are displayed directly on the screen. The <Tab>
|
|
||||||
is replaced with the number of spaces that it represents. Other non-printing
|
|
||||||
characters are replaced with "^{char}", where {char} is the non-printing
|
|
||||||
character with 64 added. Thus character 7 (bell) will be shown as "^G".
|
|
||||||
Characters between 127 and 160 are replaced with "~{char}", where {char} is
|
|
||||||
the character with 64 subtracted. These characters occupy more than one
|
|
||||||
position on the screen. The cursor can only be positioned on the first one.
|
|
||||||
|
|
||||||
If you set the 'number' option, all lines will be preceded with their
|
|
||||||
number. Tip: If you don't like wrapping lines to mix with the line numbers,
|
|
||||||
set the 'showbreak' option to eight spaces:
|
|
||||||
":set showbreak=\ \ \ \ \ \ \ \ "
|
|
||||||
|
|
||||||
If you set the 'list' option, <Tab> characters will not be shown as several
|
|
||||||
spaces, but as "^I". A '$' will be placed at the end of the line, so you can
|
|
||||||
find trailing blanks.
|
|
||||||
|
|
||||||
In Command-line mode only the command-line itself is shown correctly. The
|
|
||||||
display of the buffer contents is updated as soon as you go back to Command
|
|
||||||
mode.
|
|
||||||
|
|
||||||
The last line of the window is used for status and other messages. The
|
|
||||||
status messages will only be used if an option is on:
|
|
||||||
|
|
||||||
status message option default Unix default ~
|
|
||||||
current mode 'showmode' on on
|
|
||||||
command characters 'showcmd' on off
|
|
||||||
cursor position 'ruler' off off
|
|
||||||
|
|
||||||
The current mode is "-- INSERT --" or "-- REPLACE --", see |'showmode'|. The
|
|
||||||
command characters are those that you typed but were not used yet. {Vi: does
|
|
||||||
not show the characters you typed or the cursor position}
|
|
||||||
|
|
||||||
If you have a slow terminal you can switch off the status messages to speed
|
|
||||||
up editing:
|
|
||||||
:set nosc noru nosm
|
|
||||||
|
|
||||||
If there is an error, an error message will be shown for at least one second
|
|
||||||
(in reverse video). {Vi: error messages may be overwritten with other
|
|
||||||
messages before you have a chance to read them}
|
|
||||||
|
|
||||||
Some commands show how many lines were affected. Above which threshold this
|
|
||||||
happens can be controlled with the 'report' option (default 2).
|
|
||||||
|
|
||||||
On the Amiga Vim will run in a CLI window. The name Vim and the full name of
|
|
||||||
the current file name will be shown in the title bar. When the window is
|
|
||||||
resized, Vim will automatically redraw the window. You may make the window as
|
|
||||||
small as you like, but if it gets too small not a single line will fit in it.
|
|
||||||
Make it at least 40 characters wide to be able to read most messages on the
|
|
||||||
last line.
|
|
||||||
|
|
||||||
On most Unix systems, resizing the window is recognized and handled correctly
|
|
||||||
by Vim. {Vi: not ok}
|
|
||||||
|
|
||||||
==============================================================================
|
|
||||||
8. Definitions *definitions*
|
|
||||||
|
|
||||||
screen The whole area that Vim uses to work in. This can be
|
|
||||||
a terminal emulator window. Also called "the Vim
|
|
||||||
window".
|
|
||||||
window A view on a buffer.
|
|
||||||
|
|
||||||
A screen contains one or more windows, separated by status lines and with the
|
|
||||||
command line at the bottom.
|
|
||||||
|
|
||||||
+-------------------------------+
|
|
||||||
screen | window 1 | window 2 |
|
|
||||||
| | |
|
|
||||||
| | |
|
|
||||||
|= status line =|= status line =|
|
|
||||||
| window 3 |
|
|
||||||
| |
|
|
||||||
| |
|
|
||||||
|==== status line ==============|
|
|
||||||
|command line |
|
|
||||||
+-------------------------------+
|
|
||||||
|
|
||||||
The command line is also used for messages. It scrolls up the screen when
|
|
||||||
there is not enough room in the command line.
|
|
||||||
|
|
||||||
A difference is made between four types of lines:
|
|
||||||
|
|
||||||
buffer lines The lines in the buffer. This is the same as the
|
|
||||||
lines as they are read from/written to a file. They
|
|
||||||
can be thousands of characters long.
|
|
||||||
logical lines The buffer lines with folding applied. Buffer lines
|
|
||||||
in a closed fold are changed to a single logical line:
|
|
||||||
"+-- 99 lines folded". They can be thousands of
|
|
||||||
characters long.
|
|
||||||
window lines The lines displayed in a window: A range of logical
|
|
||||||
lines with wrapping, line breaks, etc. applied. They
|
|
||||||
can only be as long as the width of the window allows,
|
|
||||||
longer lines are wrapped or truncated.
|
|
||||||
screen lines The lines of the screen that Vim uses. Consists of
|
|
||||||
the window lines of all windows, with status lines
|
|
||||||
and the command line added. They can only be as long
|
|
||||||
as the width of the screen allows. When the command
|
|
||||||
line gets longer it wraps and lines are scrolled to
|
|
||||||
make room.
|
|
||||||
|
|
||||||
buffer lines logical lines window lines screen lines ~
|
|
||||||
|
|
||||||
1. one 1. one 1. +-- folded 1. +-- folded
|
|
||||||
2. two 2. +-- folded 2. five 2. five
|
|
||||||
3. three 3. five 3. six 3. six
|
|
||||||
4. four 4. six 4. seven 4. seven
|
|
||||||
5. five 5. seven 5. === status line ===
|
|
||||||
6. six 6. aaa
|
|
||||||
7. seven 7. bbb
|
|
||||||
8. ccc ccc c
|
|
||||||
1. aaa 1. aaa 1. aaa 9. cc
|
|
||||||
2. bbb 2. bbb 2. bbb 10. ddd
|
|
||||||
3. ccc ccc ccc 3. ccc ccc ccc 3. ccc ccc c 11. ~
|
|
||||||
4. ddd 4. ddd 4. cc 12. === status line ===
|
|
||||||
5. ddd 13. (command line)
|
|
||||||
6. ~
|
|
||||||
|
|
||||||
==============================================================================
|
|
||||||
vim:tw=78:ts=8:ft=help:norl:
|
|
||||||
File diff suppressed because it is too large
Load Diff
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user