1
0
mirror of https://github.com/akelge/vim synced 2025-07-12 09:32:09 +00:00

migration bro

This commit is contained in:
Andrea Mistrali
2015-03-13 16:06:15 +01:00
parent 0930fdeda2
commit fda55f2e8b
160 changed files with 0 additions and 2465 deletions

1602
doc/Align.txt Normal file

File diff suppressed because it is too large Load Diff

988
doc/NERD_commenter.txt Normal file
View File

@ -0,0 +1,988 @@
*NERD_commenter.txt* Plugin for commenting code
NERD COMMENTER REFERENCE MANUAL~
==============================================================================
CONTENTS *NERDCommenterContents*
1.Intro...................................|NERDCommenter|
2.Installation............................|NERDComInstallation|
3.Functionality provided..................|NERDComFunctionality|
3.1 Functionality Summary.............|NERDComFunctionalitySummary|
3.2 Functionality Details.............|NERDComFunctionalityDetails|
3.2.1 Comment map.................|NERDComComment|
3.2.2 Nested comment map..........|NERDComNestedComment|
3.2.3 Toggle comment map..........|NERDComToggleComment|
3.2.4 Minimal comment map.........|NERDComMinimalComment|
3.2.5 Invert comment map..........|NERDComInvertComment|
3.2.6 Sexy comment map............|NERDComSexyComment|
3.2.7 Yank comment map............|NERDComYankComment|
3.2.8 Comment to EOL map..........|NERDComEOLComment|
3.2.9 Append com to line map......|NERDComAppendComment|
3.2.10 Insert comment map.........|NERDComInsertComment|
3.2.11 Use alternate delims map...|NERDComAltDelim|
3.2.12 Comment aligned maps.......|NERDComAlignedComment|
3.2.13 Uncomment line map.........|NERDComUncommentLine|
3.4 Sexy Comments.....................|NERDComSexyComments|
3.5 The NERDComment function..........|NERDComNERDComment|
4.Options.................................|NERDComOptions|
4.1 Options summary...................|NERDComOptionsSummary|
4.2 Options details...................|NERDComOptionsDetails|
4.3 Default delimiter Options.........|NERDComDefaultDelims|
5. Customising key mappings...............|NERDComMappings|
6. Issues with the script.................|NERDComIssues|
6.1 Delimiter detection heuristics....|NERDComHeuristics|
6.2 Nesting issues....................|NERDComNesting|
7.About.. ............................|NERDComAbout|
8.Changelog...............................|NERDComChangelog|
9.Credits.................................|NERDComCredits|
10.License................................|NERDComLicense|
==============================================================================
1. Intro *NERDCommenter*
The NERD commenter provides many different commenting operations and styles
which are invoked via key mappings and a menu. These operations are available
for most filetypes.
There are also options that allow to tweak the commenting engine to your
taste.
==============================================================================
2. Installation *NERDComInstallation*
The NERD Commenter requires Vim 7 or higher.
Extract the plugin files in your ~/.vim (*nix) or ~/vimfiles (Windows). You
should have 2 files: >
plugin/NERD_commenter.vim
doc/NERD_commenter.txt
<
Next, to finish installing the help file run: >
:helptags ~/.vim/doc
<
See |add-local-help| for more details.
Make sure that you have filetype plugins enabled, as the script makes use of
|'commentstring'| where possible (which is usually set in a filetype plugin).
See |filetype-plugin-on| for details, but basically, stick this in your vimrc >
filetype plugin on
<
==============================================================================
3. Functionality provided *NERDComFunctionality*
------------------------------------------------------------------------------
3.1 Functionality summary *NERDComFunctionalitySummary*
The following key mappings are provided by default (there is also a menu
with items corresponding to all the mappings below):
[count]<leader>cc |NERDComComment|
Comment out the current line or text selected in visual mode.
[count]<leader>cn |NERDComNestedComment|
Same as <leader>cc but forces nesting.
[count]<leader>c<space> |NERDComToggleComment|
Toggles the comment state of the selected line(s). If the topmost selected
line is commented, all selected lines are uncommented and vice versa.
[count]<leader>cm |NERDComMinimalComment|
Comments the given lines using only one set of multipart delimiters.
[count]<leader>ci |NERDComInvertComment|
Toggles the comment state of the selected line(s) individually.
[count]<leader>cs |NERDComSexyComment|
Comments out the selected lines ``sexily''
[count]<leader>cy |NERDComYankComment|
Same as <leader>cc except that the commented line(s) are yanked first.
<leader>c$ |NERDComEOLComment|
Comments the current line from the cursor to the end of line.
<leader>cA |NERDComAppendComment|
Adds comment delimiters to the end of line and goes into insert mode between
them.
|NERDComInsertComment|
Adds comment delimiters at the current cursor position and inserts between.
Disabled by default.
<leader>ca |NERDComAltDelim|
Switches to the alternative set of delimiters.
[count]<leader>cl
[count]<leader>cb |NERDComAlignedComment|
Same as |NERDComComment| except that the delimiters are aligned down the
left side (<leader>cl) or both sides (<leader>cb).
[count]<leader>cu |NERDComUncommentLine|
Uncomments the selected line(s).
------------------------------------------------------------------------------
3.2 Functionality details *NERDComFunctionalityDetails*
------------------------------------------------------------------------------
3.2.1 Comment map *NERDComComment*
Default mapping: [count]<leader>cc
Mapped to: <plug>NERDCommenterComment
Applicable modes: normal visual visual-line visual-block.
Comments out the current line. If multiple lines are selected in visual-line
mode, they are all commented out. If some text is selected in visual or
visual-block mode then the script will try to comment out the exact text that
is selected using multi-part delimiters if they are available.
If a [count] is given in normal mode, the mapping works as though that many
lines were selected in visual-line mode.
------------------------------------------------------------------------------
3.2.2 Nested comment map *NERDComNestedComment*
Default mapping: [count]<leader>cn
Mapped to: <plug>NERDCommenterNest
Applicable modes: normal visual visual-line visual-block.
Performs nested commenting. Works the same as <leader>cc except that if a line
is already commented then it will be commented again.
If |'NERDUsePlaceHolders'| is set then the previous comment delimiters will
be replaced by place-holder delimiters if needed. Otherwise the nested
comment will only be added if the current commenting delimiters have no right
delimiter (to avoid syntax errors)
If a [count] is given in normal mode, the mapping works as though that many
lines were selected in visual-line mode.
Related options:
|'NERDDefaultNesting'|
------------------------------------------------------------------------------
3.2.3 Toggle comment map *NERDComToggleComment*
Default mapping: [count]<leader>c<space>
Mapped to: <plug>NERDCommenterToggle
Applicable modes: normal visual-line.
Toggles commenting of the lines selected. The behaviour of this mapping
depends on whether the first line selected is commented or not. If so, all
selected lines are uncommented and vice versa.
With this mapping, a line is only considered to be commented if it starts with
a left delimiter.
If a [count] is given in normal mode, the mapping works as though that many
lines were selected in visual-line mode.
------------------------------------------------------------------------------
3.2.4 Minimal comment map *NERDComMinimalComment*
Default mapping: [count]<leader>cm
Mapped to: <plug>NERDCommenterMinimal
Applicable modes: normal visual-line.
Comments the selected lines using one set of multipart delimiters if possible.
For example: if you are programming in c and you select 5 lines and press
<leader>cm then a '/*' will be placed at the start of the top line and a '*/'
will be placed at the end of the last line.
Sets of multipart comment delimiters that are between the top and bottom
selected lines are replaced with place holders (see |'NERDLPlace'|) if
|'NERDUsePlaceHolders'| is set for the current filetype. If it is not, then
the comment will be aborted if place holders are required to prevent illegal
syntax.
If a [count] is given in normal mode, the mapping works as though that many
lines were selected in visual-line mode.
------------------------------------------------------------------------------
3.2.5 Invert comment map *NERDComInvertComment*
Default mapping: <leader>ci
Mapped to: <plug>NERDCommenterInvert
Applicable modes: normal visual-line.
Inverts the commented state of each selected line. If the a selected line is
commented then it is uncommented and vice versa. Each line is examined and
commented/uncommented individually.
With this mapping, a line is only considered to be commented if it starts with
a left delimiter.
If a [count] is given in normal mode, the mapping works as though that many
lines were selected in visual-line mode.
------------------------------------------------------------------------------
3.2.6 Sexy comment map *NERDComSexyComment*
Default mapping: [count]<leader>cs
Mapped to: <plug>NERDCommenterSexy
Applicable modes: normal, visual-line.
Comments the selected line(s) ``sexily''... see |NERDComSexyComments| for
a description of what sexy comments are. Can only be done on filetypes for
which there is at least one set of multipart comment delimiters specified.
Sexy comments cannot be nested and lines inside a sexy comment cannot be
commented again.
If a [count] is given in normal mode, the mapping works as though that many
lines were selected in visual-line mode.
Related options:
|'NERDCompactSexyComs'|
------------------------------------------------------------------------------
3.2.7 Yank comment map *NERDComYankComment*
Default mapping: [count]<leader>cy
Mapped to: <plug>NERDCommenterYank
Applicable modes: normal visual visual-line visual-block.
Same as <leader>cc except that it yanks the line(s) that are commented first.
------------------------------------------------------------------------------
3.2.8 Comment to EOL map *NERDComEOLComment*
Default mapping: <leader>c$
Mapped to: <plug>NERDCommenterToEOL
Applicable modes: normal.
Comments the current line from the current cursor position up to the end of
the line.
------------------------------------------------------------------------------
3.2.9 Append com to line map *NERDComAppendComment*
Default mapping: <leader>cA
Mapped to: <plug>NERDCommenterAppend
Applicable modes: normal.
Appends comment delimiters to the end of the current line and goes
to insert mode between the new delimiters.
------------------------------------------------------------------------------
3.2.10 Insert comment map *NERDComInsertComment*
Default mapping: disabled by default.
Map it to: <plug>NERDCommenterInInsert
Applicable modes: insert.
Adds comment delimiters at the current cursor position and inserts
between them.
NOTE: prior to version 2.1.17 this was mapped to ctrl-c. To restore this
mapping add >
let NERDComInsertMap='<c-c>'
<
to your vimrc.
------------------------------------------------------------------------------
3.2.11 Use alternate delims map *NERDComAltDelim*
Default mapping: <leader>ca
Mapped to: <plug>NERDCommenterAltDelims
Applicable modes: normal.
Changes to the alternative commenting style if one is available. For example,
if the user is editing a c++ file using // comments and they hit <leader>ca
then they will be switched over to /**/ comments.
See also |NERDComDefaultDelims|
------------------------------------------------------------------------------
3.2.12 Comment aligned maps *NERDComAlignedComment*
Default mappings: [count]<leader>cl [count]<leader>cb
Mapped to: <plug>NERDCommenterAlignLeft
<plug>NERDCommenterAlignBoth
Applicable modes: normal visual-line.
Same as <leader>cc except that the comment delimiters are aligned on the left
side or both sides respectively. These comments are always nested if the
line(s) are already commented.
If a [count] is given in normal mode, the mapping works as though that many
lines were selected in visual-line mode.
------------------------------------------------------------------------------
3.2.13 Uncomment line map *NERDComUncommentLine*
Default mapping: [count]<leader>cu
Mapped to: <plug>NERDCommenterUncomment
Applicable modes: normal visual visual-line visual-block.
Uncomments the current line. If multiple lines are selected in
visual mode then they are all uncommented.
When uncommenting, if the line contains multiple sets of delimiters then the
``outtermost'' pair of delimiters will be removed.
The script uses a set of heurisics to distinguish ``real'' delimiters from
``fake'' ones when uncommenting. See |NERDComIssues| for details.
If a [count] is given in normal mode, the mapping works as though that many
lines were selected in visual-line mode.
Related options:
|'NERDRemoveAltComs'|
|'NERDRemoveExtraSpaces'|
------------------------------------------------------------------------------
3.3 Sexy Comments *NERDComSexyComments*
These are comments that use one set of multipart comment delimiters as well as
one other marker symbol. For example: >
/*
* This is a c style sexy comment
* So there!
*/
/* This is a c style sexy comment
* So there!
* But this one is ``compact'' style */
<
Here the multipart delimiters are /* and */ and the marker is *.
------------------------------------------------------------------------------
3.4 The NERDComment function *NERDComNERDComment*
All of the NERD commenter mappings and menu items invoke a single function
which delegates the commenting work to other functions. This function is
public and has the prototype: >
function! NERDComment(isVisual, type)
<
The arguments to this function are simple:
- isVisual: if you wish to do any kind of visual comment then set this to
1 and the function will use the '< and '> marks to find the comment
boundries. If set to 0 then the function will operate on the current
line.
- type: is used to specify what type of commenting operation is to be
performed, and it can be one of the following: "sexy", "invert",
"minimal", "toggle", "alignLeft", "alignBoth", "norm", "nested",
"toEOL", "append", "insert", "uncomment", "yank"
For example, if you typed >
:call NERDComment(1, 'sexy')
<
then the script would do a sexy comment on the last visual selection.
==============================================================================
4. Options *NERDComOptions*
------------------------------------------------------------------------------
4.1 Options summary *NERDComOptionsSummary*
|'loaded_nerd_comments'| Turns off the script.
|'NERDAllowAnyVisualDelims'| Allows multipart alternative delims to
be used when commenting in
visual/visual-block mode.
|'NERDBlockComIgnoreEmpty'| Forces right delims to be placed when
doing visual-block comments.
|'NERDCommentWholeLinesInVMode'| Changes behaviour of visual comments.
|'NERDCreateDefaultMappings'| Turn the default mappings on/off.
|'NERDDefaultNesting'| Tells the script to use nested comments
by default.
|'NERDMenuMode'| Specifies how the NERD commenter menu
will appear (if at all).
|'NERDLPlace'| Specifies what to use as the left
delimiter placeholder when nesting
comments.
|'NERDUsePlaceHolders'| Specifies which filetypes may use
placeholders when nesting comments.
|'NERDRemoveAltComs'| Tells the script whether to remove
alternative comment delimiters when
uncommenting.
|'NERDRemoveExtraSpaces'| Tells the script to always remove the
extra spaces when uncommenting
(regardless of whether NERDSpaceDelims
is set)
|'NERDRPlace'| Specifies what to use as the right
delimiter placeholder when nesting
comments.
|'NERDSpaceDelims'| Specifies whether to add extra spaces
around delimiters when commenting, and
whether to remove them when
uncommenting.
|'NERDCompactSexyComs'| Specifies whether to use the compact
style sexy comments.
------------------------------------------------------------------------------
4.3 Options details *NERDComOptionsDetails*
To enable any of the below options you should put the given line in your
~/.vimrc
*'loaded_nerd_comments'*
If this script is driving you insane you can turn it off by setting this
option >
let loaded_nerd_comments=1
<
------------------------------------------------------------------------------
*'NERDAllowAnyVisualDelims'*
Values: 0 or 1.
Default: 1.
If set to 1 then, when doing a visual or visual-block comment (but not a
visual-line comment), the script will choose the right delimiters to use for
the comment. This means either using the current delimiters if they are
multipart or using the alternative delimiters if THEY are multipart. For
example if we are editing the following java code: >
float foo = 1221;
float bar = 324;
System.out.println(foo * bar);
<
If we are using // comments and select the "foo" and "bar" in visual-block
mode, as shown left below (where '|'s are used to represent the visual-block
boundary), and comment it then the script will use the alternative delims as
shown on the right: >
float |foo| = 1221; float /*foo*/ = 1221;
float |bar| = 324; float /*bar*/ = 324;
System.out.println(foo * bar); System.out.println(foo * bar);
<
------------------------------------------------------------------------------
*'NERDBlockComIgnoreEmpty'*
Values: 0 or 1.
Default: 1.
This option affects visual-block mode commenting. If this option is turned
on, lines that begin outside the right boundary of the selection block will be
ignored.
For example, if you are commenting this chunk of c code in visual-block mode
(where the '|'s are used to represent the visual-block boundary) >
#include <sys/types.h>
#include <unistd.h>
#include <stdio.h>
|int| main(){
| | printf("SUCK THIS\n");
| | while(1){
| | fork();
| | }
|} |
<
If NERDBlockComIgnoreEmpty=0 then this code will become: >
#include <sys/types.h>
#include <unistd.h>
#include <stdio.h>
/*int*/ main(){
/* */ printf("SUCK THIS\n");
/* */ while(1){
/* */ fork();
/* */ }
/*} */
<
Otherwise, the code block would become: >
#include <sys/types.h>
#include <unistd.h>
#include <stdio.h>
/*int*/ main(){
printf("SUCK THIS\n");
while(1){
fork();
}
/*} */
<
------------------------------------------------------------------------------
*'NERDCommentWholeLinesInVMode'*
Values: 0, 1 or 2.
Default: 0.
By default the script tries to comment out exactly what is selected in visual
mode (v). For example if you select and comment the following c code (using |
to represent the visual boundary): >
in|t foo = 3;
int bar =| 9;
int baz = foo + bar;
<
This will result in: >
in/*t foo = 3;*/
/*int bar =*/ 9;
int baz = foo + bar;
<
But some people prefer it if the whole lines are commented like: >
/*int foo = 3;*/
/*int bar = 9;*/
int baz = foo + bar;
<
If you prefer the second option then stick this line in your vimrc: >
let NERDCommentWholeLinesInVMode=1
<
If the filetype you are editing only has no multipart delimiters (for example
a shell script) and you hadnt set this option then the above would become >
in#t foo = 3;
#int bar = 9;
<
(where # is the comment delimiter) as this is the closest the script can
come to commenting out exactly what was selected. If you prefer for whole
lines to be commented out when there is no multipart delimiters but the EXACT
text that was selected to be commented out if there IS multipart delimiters
then stick the following line in your vimrc: >
let NERDCommentWholeLinesInVMode=2
<
Note that this option does not affect the behaviour of commenting in
|visual-block| mode.
------------------------------------------------------------------------------
*'NERDCreateDefaultMappings'*
Values: 0 or 1.
Default: 1.
If set to 0, none of the default mappings will be created.
See also |NERDComMappings|.
------------------------------------------------------------------------------
*'NERDRemoveAltComs'*
Values: 0 or 1.
Default: 1.
When uncommenting a line (for a filetype with an alternative commenting style)
this option tells the script whether to look for, and remove, comment
delimiters of the alternative style.
For example, if you are editing a c++ file using // style comments and you go
<leader>cu on this line: >
/* This is a c++ comment baby! */
<
It will not be uncommented if the NERDRemoveAltComs is set to 0.
------------------------------------------------------------------------------
*'NERDRemoveExtraSpaces'*
Values: 0 or 1.
Default: 1.
By default, the NERD commenter will remove spaces around comment delimiters if
either:
1. |'NERDSpaceDelims'| is set to 1.
2. NERDRemoveExtraSpaces is set to 1.
This means that if we have the following lines in a c code file: >
/* int foo = 5; */
/* int bar = 10; */
int baz = foo + bar
<
If either of the above conditions hold then if these lines are uncommented
they will become: >
int foo = 5;
int bar = 10;
int baz = foo + bar
<
Otherwise they would become: >
int foo = 5;
int bar = 10;
int baz = foo + bar
<
If you want the spaces to be removed only if |'NERDSpaceDelims'| is set then
set NERDRemoveExtraSpaces to 0.
------------------------------------------------------------------------------
*'NERDLPlace'*
*'NERDRPlace'*
Values: arbitrary string.
Default:
NERDLPlace: "[>"
NERDRPlace: "<]"
These options are used to control the strings used as place-holder delimiters.
Place holder delimiters are used when performing nested commenting when the
filetype supports commenting styles with both left and right delimiters.
To set these options use lines like: >
let NERDLPlace="FOO"
let NERDRPlace="BAR"
<
Following the above example, if we have line of c code: >
/* int horse */
<
and we comment it with <leader>cn it will be changed to: >
/*FOO int horse BAR*/
<
When we uncomment this line it will go back to what it was.
------------------------------------------------------------------------------
*'NERDMenuMode'*
Values: 0, 1, 2, 3.
Default: 3
This option can take 4 values:
"0": Turns the menu off.
"1": Turns the 'comment' menu on with no menu shortcut.
"2": Turns the 'comment 'menu on with <alt>-c as the shortcut.
"3": Turns the 'Plugin -> comment' menu on with <alt>-c as the shortcut.
------------------------------------------------------------------------------
*'NERDUsePlaceHolders'*
Values: 0 or 1.
Default 1.
This option is used to specify whether place-holder delimiters should be used
when creating a nested comment.
------------------------------------------------------------------------------
*'NERDSpaceDelims'*
Values: 0 or 1.
Default 0.
Some people prefer a space after the left delimiter and before the right
delimiter like this: >
/* int foo=2; */
<
as opposed to this: >
/*int foo=2;*/
<
If you want spaces to be added then set NERDSpaceDelims to 1 in your vimrc.
See also |'NERDRemoveExtraSpaces'|.
------------------------------------------------------------------------------
*'NERDCompactSexyComs'*
Values: 0 or 1.
Default 0.
Some people may want their sexy comments to be like this: >
/* Hi There!
* This is a sexy comment
* in c */
<
As opposed to like this: >
/*
* Hi There!
* This is a sexy comment
* in c
*/
<
If this option is set to 1 then the top style will be used.
------------------------------------------------------------------------------
*'NERDDefaultNesting'*
Values: 0 or 1.
Default 1.
When this option is set to 1, comments are nested automatically. That is, if
you hit <leader>cc on a line that is already commented it will be commented
again.
------------------------------------------------------------------------------
3.3 Default delimiter customisation *NERDComDefaultDelims*
If you want the NERD commenter to use the alternative delimiters for a
specific filetype by default then put a line of this form into your vimrc: >
let NERD_<filetype>_alt_style=1
<
Example: java uses // style comments by default, but you want it to default to
/* */ style comments instead. You would put this line in your vimrc: >
let NERD_java_alt_style=1
<
See |NERDComAltDelim| for switching commenting styles at runtime.
==============================================================================
5. Key mapping customisation *NERDComMappings*
To change a mapping just map another key combo to the internal <plug> mapping.
For example, to remap the |NERDComComment| mapping to ",omg" you would put
this line in your vimrc: >
map ,omg <plug>NERDCommenterComment
<
This will stop the corresponding default mappings from being created.
See the help for the mapping in question to see which <plug> mapping to
map to.
See also |'NERDCreateDefaultMappings'|.
==============================================================================
6. Issues with the script *NERDComIssues*
------------------------------------------------------------------------------
6.1 Delimiter detection heuristics *NERDComHeuristics*
Heuristics are used to distinguish the real comment delimiters
Because we have comment mappings that place delimiters in the middle of lines,
removing comment delimiters is a bit tricky. This is because if comment
delimiters appear in a line doesnt mean they really ARE delimiters. For
example, Java uses // comments but the line >
System.out.println("//");
<
clearly contains no real comment delimiters.
To distinguish between ``real'' comment delimiters and ``fake'' ones we use a
set of heuristics. For example, one such heuristic states that any comment
delimiter that has an odd number of non-escaped " characters both preceding
and following it on the line is not a comment because it is probably part of a
string. These heuristics, while usually pretty accurate, will not work for all
cases.
------------------------------------------------------------------------------
6.2 Nesting issues *NERDComNesting*
If we have some line of code like this: >
/*int foo */ = /*5 + 9;*/
<
This will not be uncommented legally. The NERD commenter will remove the
"outter most" delimiters so the line will become: >
int foo */ = /*5 + 9;
<
which almost certainly will not be what you want. Nested sets of comments will
uncomment fine though. Eg: >
/*int/* foo =*/ 5 + 9;*/
<
will become: >
int/* foo =*/ 5 + 9;
<
(Note that in the above examples I have deliberately not used place holders
for simplicity)
==============================================================================
7. About *NERDComAbout*
The author of the NERD commenter is Martyzillatron --- the half robot, half
dinosaur bastard son of Megatron and Godzilla. He enjoys destroying
metropolises and eating tourist busses.
Drop him a line at martin_grenfell at msn.com. He would love to hear from you.
its a lonely life being the worlds premier terror machine. How would you feel
if your face looked like a toaster and a t-rex put together? :(
The latest stable versions can be found at
http://www.vim.org/scripts/script.php?script_id=1218
The latest dev versions are on github
http://github.com/scrooloose/nerdcommenter
==============================================================================
8. Changelog *NERDComChangelog*
2.3.0
- remove all filetypes which have a &commentstring in the standard vim
runtime for vim > 7.0 unless the script stores an alternate set of
delimiters
- make the script complain if the user doesnt have filetype plugins enabled
- use <leader> instead of comma to start the default mappings
- fix a couple of bugs with sexy comments - thanks to Tim Smart
- lots of refactoring
2.2.2
- remove the NERDShutup option and the message is suppresses, this makes
the plugin silently rely on &commentstring for unknown filetypes.
- add support for dhcpd, limits, ntp, resolv, rgb, sysctl, udevconf and
udevrules. Thanks to Thilo Six.
- match filetypes case insensitively
- add support for mp (metapost), thanks to Andrey Skvortsov.
- add support for htmlcheetah, thanks to Simon Hengel.
- add support for javacc, thanks to Matt Tolton.
- make <%# %> the default delims for eruby, thanks to tpope.
- add support for javascript.jquery, thanks to Ivan Devat.
- add support for cucumber and pdf. Fix sass and railslog delims,
thanks to tpope
2.2.1
- add support for newlisp and clojure, thanks to Matthew Lee Hinman.
- fix automake comments, thanks to Elias Pipping
- make haml comments default to -# with / as the alternative delimiter,
thanks to tpope
- add support for actionscript and processing thanks to Edwin Benavides
- add support for ps1 (powershell), thanks to Jason Mills
- add support for hostsaccess, thanks to Thomas Rowe
- add support for CVScommit
- add support for asciidoc, git and gitrebase. Thanks to Simon Ruderich.
- use # for gitcommit comments, thanks to Simon Ruderich.
- add support for mako and genshi, thanks to Keitheis.
- add support for conkyrc, thanks to David
- add support for SVNannotate, thanks to Miguel Jaque Barbero.
- add support for sieve, thanks to Stefan Walk
- add support for objj, thanks to Adam Thorsen.
2.2.0
- rewrote the mappings system to be more "standard".
- removed all the mapping options. Now, mappings to <plug> mappings are
used
- see :help NERDComMappings, and :help NERDCreateDefaultMappings for
more info
- remove "prepend comments" and "right aligned comments".
- add support for applescript, calbire, man, SVNcommit, potwiki, txt2tags and SVNinfo.
Thanks to nicothakis, timberke, sgronblo, mntnoe, Bernhard Grotz, John
O'Shea, François and Giacomo Mariani respectively.
- bugfix for haskell delimiters. Thanks to mntnoe.
2.1.18
- add support for llvm. Thanks to nicothakis.
- add support for xquery. Thanks to Phillip Kovalev.
2.1.17
- fixed haskell delimiters (hackily). Thanks to Elias Pipping.
- add support for mailcap. Thanks to Pascal Brueckner.
- add support for stata. Thanks to Jerónimo Carballo.
- applied a patch from ewfalor to fix an error in the help file with the
NERDMapleader doc
- disable the insert mode ctrl-c mapping by default, see :help
NERDComInsertComment if you wish to restore it
==============================================================================
9. Credits *NERDComCredits*
Thanks to the follow people for suggestions and patches:
Nick Brettell
Matthew Hawkins
Mathieu Clabaut
Greg Searle
Nguyen
Litchi
Jorge Scandaliaris
Shufeng Zheng
Martin Stubenschrott
Markus Erlmann
Brent Rice
Richard Willis
Igor Prischepoff
Harry
David Bourgeois
Eike Von Seggern
Torsten Blix
Alexander Bosecke
Stefano Zacchiroli
Norick Chen
Joseph Barker
Gary Church
Tim Carey-Smith
Markus Klinik
Anders
Seth Mason
James Hales
Heptite
Cheng Fang
Yongwei Wu
David Miani
Jeremy Hinegardner
Marco
Ingo Karkat
Zhang Shuhan
tpope
Ben Schmidt
David Fishburn
Erik Falor
JaGoTerr
Elias Pipping
mntnoe
Mark S.
Thanks to the following people for sending me new filetypes to support:
The hackers The filetypes~
Sam R verilog
Jonathan Derque context, plaintext and mail
Vigil fetchmail
Michael Brunner kconfig
Antono Vasiljev netdict
Melissa Reid omlet
Ilia N Ternovich quickfix
John O'Shea RTF, SVNcommitlog and vcscommit, SVNCommit
Anders occam
Mark Woodward csv
fREW gentoo-package-mask,
gentoo-package-keywords,
gentoo-package-use, and vo_base
Alexey verilog_systemverilog, systemverilog
Lizendir fstab
Michael Böhler autoit, autohotkey and docbk
Aaron Small cmake
Ramiro htmldjango and django
Stefano Zacchiroli debcontrol, debchangelog, mkd
Alex Tarkovsky ebuild and eclass
Jorge Rodrigues gams
Rainer Müller Objective C
Jason Mills Groovy, ps1
Normandie Azucena vera
Florian Apolloner ldif
David Fishburn lookupfile
Niels Aan de Brugh rst
Don Hatlestad ahk
Christophe Benz Desktop and xsd
Eyolf Østrem lilypond, bbx and lytex
Ingo Karkat dosbatch
Nicolas Weber markdown, objcpp
tinoucas gentoo-conf-d
Greg Weber D, haml
Bruce Sherrod velocity
timberke cobol, calibre
Aaron Schaefer factor
Mr X asterisk, mplayerconf
Kuchma Michael plsql
Brett Warneke spectre
Pipp lhaskell
Renald Buter scala
Vladimir Lomov asymptote
Marco mrxvtrc, aap
nicothakis SVNAnnotate, CVSAnnotate, SVKAnnotate,
SVNdiff, gitAnnotate, gitdiff, dtrace
llvm, applescript
Chen Xing Wikipedia
Jacobo Diaz dakota, patran
Li Jin gentoo-env-d, gentoo-init-d,
gentoo-make-conf, grub, modconf, sudoers
SpookeyPeanut rib
Greg Jandl pyrex/cython
Christophe Benz services, gitcommit
A Pontus vimperator
Stromnov slice, bzr
Martin Kustermann pamconf
Indriði Einarsson mason
Chris map
Krzysztof A. Adamski group
Pascal Brueckner mailcap
Jerónimo Carballo stata
Phillip Kovalev xquery
Bernhard Grotz potwiki
sgronblo man
François txt2tags
Giacomo Mariani SVNinfo
Matthew Lee Hinman newlisp, clojure
Elias Pipping automake
Edwin Benavides actionscript, processing
Thomas Rowe hostsaccess
Simon Ruderich asciidoc, git, gitcommit, gitrebase
Keitheis mako, genshi
David conkyrc
Miguel Jaque Barbero SVNannotate
Stefan Walk sieve
Adam Thorsen objj
Thilo Six dhcpd, limits, ntp, resolv, rgb, sysctl,
udevconf, udevrules
Andrey Skvortsov mp
Simon Hengel htmlcheetah
Matt Tolton javacc
Ivan Devat javascript.jquery
tpope cucumber,pdf
==============================================================================
10. License *NERDComLicense*
The NERD commenter is released under the wtfpl.
See http://sam.zoy.org/wtfpl/COPYING.

1291
doc/NERD_tree.txt Normal file

File diff suppressed because it is too large Load Diff

77
doc/akmap.txt Normal file
View File

@ -0,0 +1,77 @@
*akmap.txt* Andre Vim mappings
1. Overview |akmap-intro|
2. Toggles |akmap-toggles|
3. OS Interaction |akmap-os|
4. Developer |akmap-dev|
5. Commenter |akmap-commenter|
6. Text |akmap-text|
7. Misc |akmap-misc|
7. Version |akmap-ver|
======================================================================
*akmap-intro*
1. Overview~
<,hh> - Show this file
*akmap-toggles*
2. Toggles~
,l - Toggle list |list|
,N - Toggle line numbers |numbers|
,x - Toggle paste |paste|
,f - Toggle Full screen
,n - Toggle NERD Tree (file browser) |NERDTree|
,T - Toggle tags list |taglist.txt|
*akmap-os*
3. OS interaction~
,ts - Open terminal window, splitting |ConqueTerm|
,tt - Open terminal window, new tab |ConqueTerm|
,of - Open Filemanager (Finder) in actual directory
*akmap-dev*
4. Developer~
,ml - Append modeline
,ff - Javascript beautifier
,pw - PyDoc
*akmap-commenter*
5. Commenter~
See |NERDCommenter|
,cc - Comment
,cu - Uncomment
,ci - Invert comment status (decomment if commented, comment else)
,cy - Yank and comment
,ca - Alternate delimiters
,cs - Sexy comments (nicer)
*akmap-text*
6. Text~
See |textformat|
,ac - Align center
,aj - Align justify
,al - Align left
,ar - Align right
*akmap-misc*
7. Misc~
In command or insertion mode:
<Shift-Ctrl-Up> - Move line up
<Shift-Ctrl-Down> - Move line down
In Visual mode:
<Shift-Ctrl-Up> - Move block up
<Shift-Ctrl-Down> - Move block down
*akmap-ver*
8. Version~
Author: Andrea Mistrali
Version: $Id$
Last change: $Date$
vim:tw=78:ts=8:ft=help:norl:

442
doc/bufexplorer.txt Normal file
View File

@ -0,0 +1,442 @@
*bufexplorer.txt* Buffer Explorer Last Change: 19 Nov 2008
Buffer Explorer *buffer-explorer* *bufexplorer*
Version 7.2.2
Plugin for easily exploring (or browsing) Vim |:buffers|.
|bufexplorer-usage| Usage
|bufexplorer-installation| Installation
|bufexplorer-customization| Customization
|bufexplorer-changelog| Change Log
|bufexplorer-todo| Todo
|bufexplorer-credits| Credits
For Vim version 7.0 and above.
This plugin is only available if 'compatible' is not set.
{Vi does not have any of this}
==============================================================================
INSTALLATION *bufexplorer-installation*
To install:
- Download the bufexplorer.zip.
- Extract the zip archive into your runtime directory.
The archive contains plugin/bufexplorer.vim, and doc/bufexplorer.txt.
- Start Vim or goto an existing instance of Vim.
- Execute the following command:
>
:helptag <your runtime directory/doc
<
This will generate all the help tags for any file located in the doc
directory.
==============================================================================
USAGE *bufexplorer-usage*
To start exploring in the current window, use: >
\be OR :BufExplorer
To start exploring in a newly split horizontal window, use: >
\bs or :HSBufExplorer
To start exploring in a newly split vertical window, use: >
\bv or :VSBufExplorer
If you would like to use something other than '\', you may simply change the
leader (see |mapleader|).
Note: If the current buffer is modified when bufexplorer started, the current
window is always split and the new bufexplorer is displayed in that new
window.
Commands to use once exploring:
<enter> Opens the buffer that is under the cursor into the current
window.
<F1> Toggle help information.
<leftmouse> Opens the buffer that is under the cursor into the current
window.
<shift-enter> Opens the buffer that is under the cursor in another tab.
d |:wipeout| the buffer under the cursor from the list.
When a buffers is wiped, it will not be shown when unlisted
buffer are displayed.
D |:delete| the buffer under the cursor from the list.
The buffer's 'buflisted' is cleared. This allows for the buffer
to be displayed again using the 'show unlisted' command.
f Toggles whether you are taken to the active window when
selecting a buffer or not.
p Toggles the showing of a split filename/pathname.
q Quit exploring.
r Reverses the order the buffers are listed in.
R Toggles relative path/absolute path.
s Selects the order the buffers are listed in. Either by buffer
number, file name, file extension, most recently used (MRU), or
full path.
t Opens the buffer that is under the cursor in another tab.
u Toggles the showing of "unlisted" buffers.
Once invoked, Buffer Explorer displays a sorted list (MRU is the default
sort method) of all the buffers that are currently opened. You are then
able to move the cursor to the line containing the buffer's name you are
wanting to act upon. Once you have selected the buffer you would like,
you can then either open it, close it(delete), resort the list, reverse
the sort, quit exploring and so on...
===============================================================================
CUSTOMIZATION *bufexplorer-customization*
*g:bufExplorerDefaultHelp*
To control whether the default help is displayed or not, use: >
let g:bufExplorerDefaultHelp=0 " Do not show default help.
let g:bufExplorerDefaultHelp=1 " Show default help.
The default is to show the default help.
*g:bufExplorerDetailedHelp*
To control whether detailed help is display by, use: >
let g:bufExplorerDetailedHelp=0 " Do not show detailed help.
let g:bufExplorerDetailedHelp=1 " Show detailed help.
The default is NOT to show detailed help.
*g:bufExplorerFindActive*
To control whether you are taken to the active window when selecting a buffer,
use: >
let g:bufExplorerFindActive=0 " Do not go to active window.
let g:bufExplorerFindActive=1 " Go to active window.
The default is to be taken to the active window.
*g:bufExplorerReverseSort*
To control whether to sort the buffer in reverse order or not, use: >
let g:bufExplorerReverseSort=0 " Do not sort in reverse order.
let g:bufExplorerReverseSort=1 " Sort in reverse order.
The default is NOT to sort in reverse order.
*g:bufExplorerShowDirectories*
Directories usually show up in the list from using a command like ":e .".
To control whether to show directories in the buffer list or not, use: >
let g:bufExplorerShowDirectories=1 " Show directories.
let g:bufExplorerShowDirectories=0 " Don't show directories.
The default is to show directories.
*g:bufExplorerShowRelativePath*
To control whether to show absolute paths or relative to the current
directory, use: >
let g:bufExplorerShowRelativePath=0 " Show absolute paths.
let g:bufExplorerShowRelativePath=1 " Show relative paths.
The default is to show absolute paths.
*g:bufExplorerShowUnlisted*
To control whether to show unlisted buffer or not, use: >
let g:bufExplorerShowUnlisted=0 " Do not show unlisted buffers.
let g:bufExplorerShowUnlisted=1 " Show unlisted buffers.
The default is to NOT show unlisted buffers.
*g:bufExplorerSortBy*
To control what field the buffers are sorted by, use: >
let g:bufExplorerSortBy='extension' " Sort by file extension.
let g:bufExplorerSortBy='fullpath' " Sort by full file path name.
let g:bufExplorerSortBy='mru' " Sort by most recently used.
let g:bufExplorerSortBy='name' " Sort by the buffer's name.
let g:bufExplorerSortBy='number' " Sort by the buffer's number.
The default is to sort by mru.
*g:bufExplorerSplitBelow*
To control where the new split window will be placed above or below the
current window, use: >
let g:bufExplorerSplitBelow=1 " Split new window below current.
let g:bufExplorerSplitBelow=0 " Split new window above current.
The default is to use what ever is set by the global &splitbelow
variable.
*g:bufExplorerSplitOutPathName*
To control whether to split out the path and file name or not, use: >
let g:bufExplorerSplitOutPathName=1 " Split the path and file name.
let g:bufExplorerSplitOutPathName=0 " Don't split the path and file
" name.
The default is to split the path and file name.
*g:bufExplorerSplitRight*
To control where the new vsplit window will be placed to the left or right of
current window, use: >
let g:bufExplorerSplitRight=0 " Split left.
let g:bufExplorerSplitRight=1 " Split right.
The default is to use the global &splitright.
===============================================================================
CHANGE LOG *bufexplorer-changelog*
7.2.2 - Fix:
* Thanks to David L. Dight for spotting and fixing an issue when
using ctrl^. bufexplorer would incorrectly handle the previous
buffer so that when ctrl^ was pressed the incorrect file was opened.
7.2.1 - Fix:
* Thanks to Dimitar for spotting and fixing a feature that was
inadvertently left out of the previous version. The feature was
when bufexplorer was used together with WinManager, you could use
the tab key to open a buffer in a split window.
7.2.0 - Enhancements:
* For all those missing the \bs and \bv commands, these have now
returned. Thanks to Phil O'Connell for asking for the return of
these missing features and helping test out this version.
Fixes:
* Fixed problem with the bufExplorerFindActive code not working
correctly.
* Fixed an incompatibility between bufexplorer and netrw that caused
buffers to be incorrectly removed from the MRU list.
7.1.7 - Fixes:
* TaCahiroy fixed several issues related to opening a buffer in a
tab.
7.1.6 - Fixes:
* Removed ff=unix from modeline in bufexplorer.txt. Found by Bill
McCarthy.
7.1.5 - Fixes:
* Could not open unnamed buffers. Fixed by TaCahiroy.
7.1.4 - Fixes:
* Sometimes when a file's path has 'white space' in it, extra buffers
would be created containing each piece of the path. i.e:
opening c:\document and settings\test.txt would create a buffer
named "and" and a buffer named "Documents". This was reported and
fixed by TaCa Yoss.
7.1.3 - Fixes:
* Added code to allow only one instance of the plugin to run at a
time. Thanks Dennis Hostetler.
7.1.2 - Fixes:
* Fixed a jumplist issue spotted by JiangJun. I overlooked the
'jumplist' and with a couple calls to 'keepjumps', everything is
fine again.
* Went back to just having a plugin file, no autoload file. By having
the autoload, WinManager was no longer working and without really
digging into the cause, it was easier to go back to using just a
plugin file.
7.1.1 - Fixes:
* A problem spotted by Thomas Arendsen Hein.
When running Vim (7.1.94), error E493 was being thrown.
Enhancements:
* Added 'D' for 'delete' buffer as the 'd' command was a 'wipe'
buffer.
7.1.0 - Another 'major' update, some by Dave Larson, some by me.
* Making use of 'autoload' now to make the plugin load quicker.
* Removed '\bs' and '\bv'. These are now controlled by the user. The
user can issue a ':sp' or ':vs' to create a horizontal or vertical
split window and then issue a '\be'
* Added handling of tabs.
7.0.17 - Fixed issue with 'drop' command.
Various enhancements and improvements.
7.0.16 - Fixed issue reported by Liu Jiaping on non Windows systems, which was
...
Open file1, open file2, modify file1, open bufexplorer, you get the
following error:
--------8<--------
Error detected while processing function
<SNR>14_StartBufExplorer..<SNR>14_SplitOpen:
line 4:
E37: No write since last change (add ! to override)
But the worse thing is, when I want to save the current buffer and
type ':w', I get another error message:
E382: Cannot write, 'buftype' option is set
--------8<--------
7.0.15 - Thanks to Mark Smithfield for suggesting bufexplorer needed to handle
the ':args' command.
7.0.14 - Thanks to Randall Hansen for removing the requirement of terminal
versions to be recompiled with 'gui' support so the 'drop' command
would work. The 'drop' command is really not needed in terminal
versions.
7.0.13 - Fixed integration with WinManager.
Thanks to Dave Eggum for another update.
- Fix: The detailed help didn't display the mapping for toggling
the split type, even though the split type is displayed.
- Fixed incorrect description in the detailed help for toggling
relative or full paths.
- Deprecated s:ExtractBufferNbr(). Vim's str2nr() does the same
thing.
- Created a s:Set() function that sets a variable only if it hasn't
already been defined. It's useful for initializing all those
default settings.
- Removed checks for repetitive command definitions. They were
unnecessary.
- Made the help highlighting a little more fancy.
- Minor reverse compatibility issue: Changed ambiguous setting
names to be more descriptive of what they do (also makes the code
easier to follow):
Changed bufExplorerSortDirection to bufExplorerReverseSort
Changed bufExplorerSplitType to bufExplorerSplitVertical
Changed bufExplorerOpenMode to bufExplorerUseCurrentWindow
- When the BufExplorer window closes, all the file-local marks are
now deleted. This may have the benefit of cleaning up some of the
jumplist.
- Changed the name of the parameter for StartBufExplorer from
"split" to "open". The parameter is a string which specifies how
the buffer will be open, not if it is split or not.
- Deprecated DoAnyMoreBuffersExist() - it is a one line function
only used in one spot.
- Created four functions (SplitOpen(), RebuildBufferList(),
UpdateHelpStatus() and ReSortListing()) all with one purpose - to
reduce repeated code.
- Changed the name of AddHeader() to CreateHelp() to be more
descriptive of what it does. It now returns an array instead of
updating the window directly. This has the benefit of making the
code more efficient since the text the function returns is used a
little differently in the two places the function is called.
- Other minor simplifications.
7.0.12 - MAJOR Update.
This version will ONLY run with Vim version 7.0 or greater.
Dave Eggum has made some 'significant' updates to this latest
version:
- Added BufExplorerGetAltBuf() global function to be used in the
user<65>s rulerformat.
- Added g:bufExplorerSplitRight option.
- Added g:bufExplorerShowRelativePath option with mapping.
- Added current line highlighting.
- The split type can now be changed whether bufexplorer is opened
in split mode or not.
- Various major and minor bug fixes and speed improvements.
- Sort by extension.
Other improvements/changes:
- Changed the help key from '?' to <F1> to be more 'standard'.
- Fixed splitting of vertical bufexplorer window.
Hopefully I have not forgot something :)
7.0.11 - Fixed a couple of highlighting bugs, reported by David Eggum. He also
changed passive voice to active on a couple of warning messages.
7.0.10 - Fixed bug report by Xiangjiang Ma. If the 'ssl' option is set,
the slash character used when displaying the path was incorrect.
7.0.9 - Martin Grenfell found and eliminated an annoying bug in the
bufexplorer/winmanager integration. The bug was were an
annoying message would be displayed when a window was split or
a new file was opened in a new window. Thanks Martin!
7.0.8 - Thanks to Mike Li for catching a bug in the WinManager integration.
The bug was related to the incorrect displaying of the buffer
explorer's window title.
7.0.7 - Thanks to Jeremy Cowgar for adding a new enhancement. This
enhancement allows the user to press 'S', that is capital S, which
will open the buffer under the cursor in a newly created split
window.
7.0.6 - Thanks to Larry Zhang for finding a bug in the "split" buffer code.
If you force set g:bufExplorerSplitType='v' in your vimrc, and if you
tried to do a \bs to split the bufexplorer window, it would always
split horizontal, not vertical. He also found that I had a typeo in
that the variable g:bufExplorerSplitVertSize was all lower case in
the documentation which was incorrect.
7.0.5 - Thanks to Mun Johl for pointing out a bug that if a buffer was
modified, the '+' was not showing up correctly.
7.0.4 - Fixed a problem discovered first by Xiangjiang Ma. Well since I've
been using vim 7.0 and not 6.3, I started using a function (getftype)
that is not in 6.3. So for backward compatibility, I conditionaly use
this function now. Thus, the g:bufExplorerShowDirectories feature is
only available when using vim 7.0 and above.
7.0.3 - Thanks to Erwin Waterlander for finding a problem when the last
buffer was deleted. This issue got me to rewrite the buffer display
logic (which I've wanted to do for sometime now).
Also great thanks to Dave Eggum for coming up with idea for
g:bufExplorerShowDirectories. Read the above information about this
feature.
7.0.2 - Thanks to Thomas Arendsen Hein for finding a problem when a user
has the default help turned off and then brought up the explorer. An
E493 would be displayed.
7.0.1 - Thanks to Erwin Waterlander for finding a couple problems.
The first problem allowed a modified buffer to be deleted. Opps! The
second problem occurred when several files were opened, BufExplorer
was started, the current buffer was deleted using the 'd' option, and
then BufExplorer was exited. The deleted buffer was still visible
while it is not in the buffers list. Opps again!
7.0.0 - Thanks to Shankar R. for suggesting to add the ability to set
the fixed width (g:bufExplorerSplitVertSize) of a new window
when opening bufexplorer vertically and fixed height
(g:bufExplorerSplitHorzSize) of a new window when opening
bufexplorer horizontally. By default, the windows are normally
split to use half the existing width or height.
6.3.0 - Added keepjumps so that the jumps list would not get cluttered with
bufexplorer related stuff.
6.2.3 - Thanks to Jay Logan for finding a bug in the vertical split position
of the code. When selecting that the window was to be split
vertically by doing a '\bv', from then on, all splits, i.e. '\bs',
were split vertically, even though g:bufExplorerSplitType was not set
to 'v'.
6.2.2 - Thanks to Patrik Modesto for adding a small improvement. For some
reason his bufexplorer window was always showing up folded. He added
'setlocal nofoldenable' and it was fixed.
6.2.1 - Thanks goes out to Takashi Matsuo for added the 'fullPath' sorting
logic and option.
6.2.0 - Thanks goes out to Simon Johann-Ganter for spotting and fixing a
problem in that the last search pattern is overridden by the search
pattern for blank lines.
6.1.6 - Thanks to Artem Chuprina for finding a pesky bug that has been around
for sometime now. The <esc> key mapping was causing the buffer
explored to close prematurely when vim was run in an xterm. The <esc>
key mapping is now removed.
6.1.5 - Thanks to Khorev Sergey. Added option to show default help or not.
6.1.4 - Thanks goes out to Valery Kondakoff for suggesting the addition of
setlocal nonumber and foldcolumn=0. This allows for line numbering
and folding to be turned off temporarily while in the explorer.
6.1.3 - Added folding. Did some code cleanup. Added the ability to force the
newly split window to be temporarily vertical, which was suggested by
Thomas Glanzmann.
6.1.2 - Now pressing the <esc> key will quit, just like 'q'.
Added folds to hide winmanager configuration.
If anyone had the 'C' option in their cpoptions they would receive
a E10 error on startup of BufExplorer. cpo is now saved, updated and
restored. Thanks to Charles E Campbell, Jr.
Attempted to make sure there can only be one BufExplorer window open
at a time.
6.1.1 - Thanks to Brian D. Goodwin for adding toupper to FileNameCmp. This
way buffers sorted by name will be in the correct order regardless of
case.
6.0.16 - Thanks to Andre Pang for the original patch/idea to get bufexplorer
to work in insertmode/modeless mode (evim). Added Initialize
and Cleanup autocommands to handle commands that need to be
performed when starting or leaving bufexplorer.
6.0.15 - Srinath Avadhanulax added a patch for winmanager.vim.
6.0.14 - Fix a few more bug that I thought I already had fixed. Thanks
to Eric Bloodworth for adding 'Open Mode/Edit in Place'. Added
vertical splitting.
6.0.13 - Thanks to Charles E Campbell, Jr. for pointing out some embarrassing
typos that I had in the documentation. I guess I need to run
the spell checker more :o)
6.0.12 - Thanks to Madoka Machitani, for the tip on adding the augroup command
around the MRUList autocommands.
6.0.11 - Fixed bug report by Xiangjiang Ma. '"=' was being added to the
search history which messed up hlsearch.
6.0.10 - Added the necessary hooks so that the Srinath Avadhanula's
winmanager.vim script could more easily integrate with this script.
Tried to improve performance.
6.0.9 - Added MRU (Most Recently Used) sort ordering.
6.0.8 - Was not resetting the showcmd command correctly.
Added nifty help file.
6.0.7 - Thanks to Brett Carlane for some great enhancements. Some are added,
some are not, yet. Added highlighting of current and alternate
filenames. Added splitting of path/filename toggle. Reworked
ShowBuffers().
Changed my email address.
6.0.6 - Copyright notice added. Needed this so that it could be distributed
with Debian Linux. Fixed problem with the SortListing() function
failing when there was only one buffer to display.
6.0.5 - Fixed problems reported by David Pascoe, in that you where unable to
hit 'd' on a buffer that belonged to a files that no longer existed
and that the 'yank' buffer was being overridden by the help text when
the bufexplorer was opened.
6.0.4 - Thanks to Charles Campbell, Jr. for making this plugin more plugin
*compliant*, adding default keymappings of <Leader>be and <Leader>bs
as well as fixing the 'w:sortDirLabel not being defined' bug.
6.0.3 - Added sorting capabilities. Sort taken from explorer.vim.
6.0.2 - Can't remember.
6.0.1 - Initial release.
===============================================================================
TODO *bufexplorer-todo*
- The issuing of a ':bd' command does not always remove the buffer number from
the MRU list.
===============================================================================
CREDITS *bufexplorer-credits*
Author: Jeff Lanzarotta <delux256-vim at yahoo dot com>
Credit must go out to Bram Moolenaar and all the Vim developers for
making the world's best editor (IMHO). I also want to thank everyone who
helped and gave me suggestions. I wouldn't want to leave anyone out so I
won't list names.
===============================================================================
vim:tw=78:noet:wrap:ts=8:ft=help:norl:

204
doc/cecutil.txt Normal file
View File

@ -0,0 +1,204 @@
*cecutil.txt* DrChip's Utilities Sep 04, 2007
Author: Charles E. Campbell, Jr. <NdrOchip@ScampbellPfamily.AbizM>
(remove NOSPAM from Campbell's email first)
Copyright: (c) 2004-2006 by Charles E. Campbell, Jr. *cecutil-copyright*
The VIM LICENSE applies to cecutil.vim and cecutil.txt
(see |copyright|) except use "cecutil" instead of "Vim"
No warranty, express or implied. Use At-Your-Own-Risk.
==============================================================================
1. Contents *cecutil* *cecutil-contents*
1. Contents.................: |cecutil-contents|
2. Positioning..............: |cecutil-posn|
3. Marks....................: |cecutil-marks|
4. Maps.....................: |cecutil-maps|
5. History..................: |cecutil-history|
==============================================================================
2. Positioning *cecutil-posn* *cecutil-position*
let winposn= SaveWinPosn() *cecutil-savewinposn*
This operation will save window position in winposn variable and
on a (buffer local) b:winposn{} stack.
call SaveWinPosn()
This function will save window position in b:winposn{b:iwinposn}
let winposn= SaveWinPosn(0)
This operation will _only_ save the window position in winposn variable.
Ie. the window position will not appear on the b:winposn{} stack. You
will then need to use RestoreWinPosn(winposn) to restore to this window
position.
call RestoreWinPosn() *cecutil-restorewinposn*
This function call will use the local buffer b:winposn{} stack to
restore the last window position saved therein. It will also
pop the stack.
call RestoreWinPosn(winposn)
This function call will use the winposn variable and restore
the window position accordingly. It will also search the
stack and remove any similar entry from the stack.
*cecutil-map* *cecutil-cmd* *cecutil-swp* *cecutil-rwp*
\swp : save current window position (uses the b:winposn{} stack)
:SWP like \swp, but provided as a command
\rwp : restore window position (uses the b:winposn{} stack)
:RWP like \rwp, but provided as a command
==============================================================================
3. Marks *cecutil-marks*
call SaveMark(markname) *cecutil-savemark*
let savemark= SaveMark(markname)
SM markname >
ex. call SaveMark("a")
let savemarkb= SaveMark("b")
:SM a
<
This function saves a string in the global variable g:savemark_{markname}
which contains sufficient information to completely restore the position
of a mark. It also returns that string.
call RestoreMark(markname) *cecutil-restoremark*
call RestoreMark(savemark)
This function either takes a single-character string (ex. "a") and uses
g:savemark_{markname} to restore the mark position or assumes that
the string passed to it is a SaveMark() string (and uses it to restore
the mark). >
ex. call RestoreMark("a")
call RestoreMark(savemarkb)
:RM a
<
call DestroyMark(markname) *cecutil-destroymark*
The DestroyMark() function completely removes a mark. It does this
by saving the window position, copying line one, putting the
to-be-destroyed mark on that new line, deleting the new line, and
then restoring the window position. The windows' modified status
is preserved. >
ex. call DestroyMark("a")
:DM a
<
==============================================================================
4.Maps *cecutil-maps*
*cecutil-saveusermaps*
call SaveUserMaps(mapmode,maplead,mapchx,suffix)
This function sets up a script-variable (ie. a variable that can
generally be accessed only from within cecutil's own functions;
see |s:|) called s:restoremap. The selected user's maps are appended
to this variable; the RestoreUserMaps() (|cecutil-restoreusermaps|)
function uses the contents of this variable to restore user maps.
mapmode - see :help maparg for its list (see |maparg()|) >
ex. "n" = Normal
< Will now accept an optional leading "u"; if present,
SaveUserMaps() will save and unmap (otherwise, it
will save only)
mapchx - "<something>" handled as a single map item. >
ex. "<left>"
< - "string" a string of single letters which are actually
multiple two-letter maps
maplead - the maps are assumed to have the form >
maplead . each_character_in_string
< ex. maplead="\" and mapchx="abc" saves mappings for >
\a, \b, and \c
< Of course, if maplead is "", then for mapchx="abc",
mappings for just a, b, and c are saved.
- :something handled as a single map item, w/o the ":" >
ex. mapchx= ":abc"
< will save the user mapping for "abc"
suffix - a string unique to your plugin >
ex. suffix= "DrawIt"
<
Some examples follow: >
call SaveUserMaps("n","","webWEBjklh$0%;,nN","HiMtchBrkt")
< normal mode maps for w, e, b, W, E, B, j, k, l, etc
(if any) are all saved in the variable
s:restoremaps_HiMtchBrkt >
call SaveUserMaps("n","","<up>","DrawIt")
< the normal mode map (if any) for the <up> key is saved in
the variable s:restoremaps_DrawIt >
call SaveUserMaps("n","",":F(","HiMtchBrkt")
< the normal mode map for F( (if any) is saved in the
variable s:restoremaps_HiMtchBrkt
call RestoreUserMaps(suffix)
The usermaps saved by SaveUserMaps() with the given suffix will be
restored (ie. s:restoremaps_{suffix}). Example: >
call RestoreUserMaps("HiMtchBrkt")
< will restore all user maps redefined for the HiMtchBrkt plugin
==============================================================================
5. History *cecutil-history* {{{1
v17 Sep 04, 2007 : * new function, QArgSplitter(), included
v16 Oct 30, 2006 : * com -> com! so AsNeeded is happier
Feb 12, 2007 * fixed a bug where :somemap (a map of "somemap")
did not use the optional mapleader (so it'd be
a map of "\somemap", if "\" is the mapleader).
(problem pointed out by Michael Zhang)
v15 Jan 25, 2006 : * bypass for report option for DestroyMark() included
* SaveWinPosn() and RestoreWinPosn() now handle an
empty buffer
* b:(varname) now use b:cecutil_(varname)
* map restoration improved
v14 Jan 23, 2006 : * bypasses for si, so, and siso options included
Jan 25, 2006 * SaveUserMaps' mapmode argument, heretofore just
a single letter (see |maparg()|), now accepts a
leading "u". If present, SaveUserMaps() will
do an unmap.
v13 Jan 12, 2006 : * SaveUserMaps() was saving user maps but then also
unmap'ing them. HiMtchBrkt needed to append a
function call to maps, not overwrite them. So
the new SaveUserMaps() just saves user maps,
leaving their definitions in place.
Jan 18, 2006 * keepjumps used to avoid jumplist changes when
using SaveWinPosn() and RestoreWinPosn()
v12 Dec 29, 2005 : * bugfix (affected Mines.vim)
v11 Dec 29, 2005 : * two new functions (SaveUserMaps() and
RestoreUserMaps() )
v10 Nov 22, 2005 : * SaveWinPosn bugfix
v9 Jun 02, 2005 : * <q-args> produces a "" argument when there are
no arguments, which caused difficulties. Fixed.
v8 Apr 22, 2005 : * <q-args> used to handle marknames with commands
Thus, :DM a will delete mark a
v7 Mar 10, 2005 : * removed zO from saved window position; caused
problems with ftplugin/currfunc.vim
* doing a SWP and RWP on an empty buffer produced
"empty buffer" messages; now these are ignored
Apr 13, 2005 * command (SWP RWP MP SP etc) now have -bar so
that the "|" can be used to chain such commands
v6 Feb 17, 2005 : * improved SaveMark() and RestoreMark()
v5 Jan 18, 2005 : * s:loaded_winposn changed to g:loaded_cecutil
v4 Oct 25, 2004 : * changed com! to com so that error messages will
be given when there's a command-name conflict
v3 May 19, 2004 : * bugfix: the sequence \swp\rwp wasn't working right
* bugfix: \swp...\rwp was echoing the current
line when the \rwp should've been silent
* improved Dfunc/Decho/Dret debugging
==============================================================================
vim:tw=78:ts=8:ft=help:fdm=marker

646
doc/conque_term.txt Normal file
View File

@ -0,0 +1,646 @@
*ConqueTerm* Plugin to run a shell inside a Vim buffer
The ConqueTerm plugin will turn a Vim buffer into a terminal emulator, allowing
you to run and interact with a shell or shell application inside the buffer.
1. Installation |conque-term-setup|
1.1 Requirements for Unix |conque-term-requirements|
1.2 Requirements for Windows |conque-term-windows|
1.3 Installation |conque-term-installation|
2. Usage |conque-term-usage|
2.1 General Usage |conque-term-gen-usage|
2.2 Special keys |conque-term-special-keys|
2.2.1 Send text to Conque |conque-term-send|
2.2.2 Toggle terminal input mode |conque-term-input-mode|
2.2.3 Sending the <Esc> key press |conque-term-esc|
3. Configuration |conque-term-options|
3.1 General |conque-config-general|
3.1.1 Python version |ConqueTerm_PyVersion|
3.1.2 Fast mode |ConqueTerm_FastMode|
3.1.3 Color support |ConqueTerm_Color|
3.1.4 Session Support |ConqueTerm_SessionSupport|
3.1.5 Keep updating terminal buffer |ConqueTerm_ReadUnfocused|
3.1.6 Insert mode when entering buffer |ConqueTerm_InsertOnEnter|
3.1.7 Close buffer when program exits |ConqueTerm_CloseOnEnd|
3.1.8 Hide start messages |ConqueTerm_StartMessages|
3.1.9 Regex for highlighting your prompt |ConqueTerm_PromptRegex|
3.1.10 Syntax type |ConqueTerm_Syntax|
3.2 Keyboard |conque-config-keyboard|
3.2.1 The <Esc> key |ConqueTerm_EscKey|
3.2.2 Toggle terminal input mode |ConqueTerm_ToggleKey|
3.2.3 Enable <C-w> in insert mode |ConqueTerm_CWInsert|
3.2.4 Execute current file in Conque |ConqueTerm_ExecFileKey|
3.2.5 Send current file contents to Conque|ConqueTerm_SendFileKey|
3.2.6 Send selected text to Conque |ConqueTerm_SendVisKey|
3.2.7 Function Keys |ConqueTerm_SendFunctionKeys|
3.3 Unix |conque-config-unix|
3.3.1 Choose your terminal type |ConqueTerm_TERM|
3.4 Windows |conque-config-windows|
3.4.1 Python executable |ConqueTerm_PyExe|
3.4.2 Windows character code page |ConqueTerm_CodePage|
3.4.3 Terminal color method |ConqueTerm_ColorMode|
4. VimScript API |conque-term-api|
4.1 conque_term#open() |conque-term-open|
4.2 conque_term#subprocess() |conque-term-subprocess|
4.3 conque_term#get_instance() |conque-term-get-instance|
4.4 CONQUE_OBJECT.write() |conque-term-write|
4.5 CONQUE_OBJECT.writeln() |conque-term-writeln|
4.6 CONQUE_OBJECT.read() |conque-term-read|
4.7 CONQUE_OBJECT.set_callback() |conque-term-set-callback|
4.8 CONQUE_OBJECT.close() |conque-term-close|
4.9 Registering functions |conque-term-events|
5. Misc |conque-term-misc|
5.1 Known bugs |conque-term-bugs|
5.2 Contribute |conque-term-contribute|
5.3 Feedback |conque-term-feedback|
==============================================================================
1. Installation *conque-term-setup*
Conque is designed for both Unix and Windows operating systems, however the
requirements are slightly different. Please check section below corresponding
to your installed OS.
1.1 Requirements for Unix *conque-term-requirements*
* [G]Vim 7.0+ with +python and/or +python3
* Python 2.3+ and/or 3.x
* Unix-like OS: Linux, OS X, Solaris, Cygwin, etc
The most common stumbling block is getting a version of Vim which has the
python interface enabled. Most all software package managers will have a copy
of Vim with Python support, so that is often the easiest way to get it. If
you're compiling Vim from source, be sure to use the --enable-pythoninterp
option, or --enable-python3interp for Python 3. On OS X the best option is
MacVim, which installs with Python support by default.
1.2 Requirements for Windows *conque-term-windows*
* [G]Vim 7.3 with +python and/or +python3
* Python 2.7 and/or 3.1
* Modern Windows OS (XP or later)
Conque only officially supports the latest GVim 7.3 Windows installer
available at www.vim.org. If you are currently using Vim 7.2 or earlier you
will need to upgrade to 7.3 for Windows support. The Windows installer already
has the +python/+python3 interface built in.
The official 7.3 release of Vim for Windows only works with Python versions
2.7 and/or 3.1. You can download and install Python from their website
http://www.python.org/download
If you are compiling Vim + Python from source on Windows, the requirements
become only Vim 7.3+ and Python 2.7+.
1.3 Installation *conque-term-installation*
Download the latest vimball from http://conque.googlecode.com
Open the .vba file with Vim and run the following commands:
>
:so %
:q
<
That's it! The :ConqueTerm command will be available the next time you start
Vim. You can delete the .vba file when you've verified Conque was successfully
installed.
==============================================================================
2. Usage *conque-term-usage*
2.1 General Usage *conque-term-gen-usage*
Type :ConqueTerm <command> to launch an application in the current buffer. Eg:
>
:ConqueTerm bash
:ConqueTerm mysql -h localhost -u joe_lunchbox Menu
:ConqueTerm Powershell.exe
<
Use :ConqueTermSplit or :ConqueTermVSplit to open Conque in a new horizontal
or vertical buffer. Use :ConqueTermTab to open Conque in a new tab.
In insert mode you can interact with the shell as you would expect in a
normal terminal. All key presses will be sent to the terminal, including
control characters. See |conque-term-special-keys| for more information,
particularly regarding the <Esc> key.
In normal mode you can use Vim commands to browse your terminal output and
scroll back through the history. Most all Vim functionality will work, such
as searching, yanking or highlighting text.
2.2 Special keys *conque-term-special-keys*
There are several keys which can be configured to have special behavior with
Conque.
2.2.1 Send text to Conque *conque-term-send*
Conque gives you three different commands to send text from a different
buffer, probably a source code file, to the Conque terminal buffer. All three
are configurable to use your choice of key combinations.
To send a visually selected range of text to an existing terminal buffer,
press the <F9> key.
To send the entire contents of the file you are editing to an existing
terminal buffer, press the <F10> key.
Finally, to execute the current file in a new terminal buffer press the <F11>
key. This will split the screen with a new Conque buffer. The file you are
editing must be executable for this command to work.
See |conque-term-options| for information about configuring these commands.
2.2.2 Toggle terminal input mode *conque-term-input-mode*
If you want to use insert mode to edit the terminal screen, press <F8>. You
will now be able to edit the terminal output freely without your cursor
jumping the the active prompt line. This may be useful if you want to reformat
terminal output for readability.
While the terminal is paused new output will not be displayed on the screen
until you press <F8> again to resume.
You can configure Conque to use a different key with the |ConqueTerm_ToggleKey|
option.
2.2.3 Sending the <Esc> key press *conque-term-esc*
By default if you press the <Esc> key in a Conque buffer you will leave insert
mode. But what if you want the <Esc> character to be sent to your terminal?
There are two options. By default, pressing <Esc> twice will send one <Esc>
character to the terminal and you will remain in insert mode, while pressing
it once will leave insert mode.
Alternatively you can use the |ConqueTerm_EscKey| option to choose a
different key for leaving insert mode. If a custom key is set, then all <Esc>
key presses will be sent to the terminal.
2.3 Registering functions *conque-term-register*
Conque allows you to write your own VimScript functions which will be called
at certain events. See the API section |conque-term-events| for more.
==============================================================================
3. Options *conque-term-options*
You can set the following options in your .vimrc (default values shown)
3.1 General *conque-config-general*
3.1.1 Python version *ConqueTerm_PyVersion*
Conque will work with either Python 2.x or 3.x, assuming the interfaces have
been installed. By default it will try to use Python 2 first, then will try
Python 3. If you want Conque to use Python 3, set this variable to 3.
Note: even if you set this to 3, if you don't have the python3 interface
Conque will fall back to using Python 2.
>
let g:ConqueTerm_PyVersion = 2
<
3.1.2 Fast Mode *ConqueTerm_FastMode*
Disable features which could make Conque run slowly. This includes most
terminal colors and some unicode support. Set this to 1 to enable fast mode.
>
let g:ConqueTerm_FastMode = 0
<
3.1.3 Color support *ConqueTerm_Color*
Terminal colors have the potential to slow down terminal screen rendering,
depending on how many colors are used and how fast the computer is. This
option allows you to choose how much color support will be enabled.
If set to 0, terminal colors will be disabled. This will allow the terminal to
render most quickly. Syntax highlighting will still work. For example
highlighting quoted strings or MySQL output.
If set to 1, terminal colors will be enabled, but only for the most recent 200
lines of terminal output. Older output will be periodically stripped of color
highlighting to keep the display responsive.
If set to 2, terminal colors will always be enabled. If your programs don't
use color output very frequently this is a good choice.
Note: Color support is automatically disabled in "fast mode".
>
let g:ConqueTerm_Color = 1
<
3.1.4 Session Support *ConqueTerm_SessionSupport*
Vim's :mksession command allows you to save your current buffer configuration
to a file, which can be loaded at a later time after you've closed Vim.
By default, Conque buffers are not restored. This is mostly for safety
reasons; you may not want Vim to automatically re-run a destructive command.
However, if you're not working with missile launch code, and want Vim to
restart your Conque buffers when you load a session file, set this variable
to 1. Note your original subprocess and shell output will not be restored, but
the same command will be started in your buffer.
>
let g:ConqueTerm_SessionSupport = 0
<
3.1.5 Keep updating terminal buffer *ConqueTerm_ReadUnfocused*
If set to 1 then your Conque buffers will continue to update after you've
switched to another buffer.
Note: Conque buffers may continue to update, but they will not scroll down as
new lines are added beyond the bottom of the visible buffer area. This is a
limitation of the Vim scripting language for which I haven't found a
workaround.
>
let g:ConqueTerm_ReadUnfocused = 1
<
3.1.6 Insert mode when entering buffer *ConqueTerm_InsertOnEnter*
If set to 1 then you will automatically go into insert mode when you enter the
buffer. This diverges from normal Vim behavior. If 0 you will still be in
normal mode.
>
let g:ConqueTerm_InsertOnEnter = 0
<
3.1.7 Close buffer when program exits *ConqueTerm_CloseOnEnd*
If you want your terminal buffer to be closed and permanently deleted when the
program running inside of it exits, set this option to 1. Otherwise the buffer
will become a simple text buffer after the program exits, and you can edit the
program output in insert mode.
>
let g:ConqueTerm_CloseOnEnd = 0
<
3.1.8 Show start messages *ConqueTerm_StartMessages*
Display warning messages when starting up ConqueTerm if your system is
configured incorrectly.
>
let g:ConqueTerm_StartMessages = 1
<
3.1.9 Regex for highlighting your prompt *ConqueTerm_PromptRegex*
Use this regular expression for sytax highlighting your terminal prompt. Your
terminal will generally run faster if you use Vim highlighting instead of
terminal colors for your prompt. You can also use it to do more advanced
syntax highlighting for the prompt line.
>
let g:ConqueTerm_PromptRegex = '^\w\+@[0-9A-Za-z_.-]\+:[0-9A-Za-z_./\~,:-]\+\$'
<
3.1.10 Choose Vim syntax type *ConqueTerm_Syntax*
Set the buffer syntax. The default 'conque' has highlighting for MySQL, but
not much else.
>
let g:ConqueTerm_Syntax = 'conque'
<
3.2 Keyboard *conque-config-keyboard*
3.2.1 The <Esc> key *ConqueTerm_EscKey*
If a custom key is set, then all <Esc> key presses will be sent to the
terminal and you must use this custom key to leave insert mode. If left to the
default value of '<Esc>' then you must press it twice to send the escape
character to the terminal, while pressing it once will leave insert mode.
Note: You cannot use a key which is internally coded with the escape
character. This includes the <F-> keys and often the <A-> and <M-> keys.
Picking a control key, such as <C-k> will be your best bet.
>
let g:ConqueTerm_EscKey = '<Esc>'
<
3.2.2 Toggle terminal input mode *ConqueTerm_ToggleKey*
Press this key to pause terminal input and output display. You will then be
able to edit the terminal screen as if it were a normal text buffer. Press
this key again to resume terminal mode.
>
let g:ConqueTerm_ToggleKey = '<F8>'
<
3.2.3 Enable <C-w> in insert mode *ConqueTerm_CWInsert*
If set to 1 then you can leave the Conque buffer using the <C-w> commands
while you're still in insert mode. If set to 0 then the <C-w> character will
be sent to the terminal. If both this option and ConqueTerm_InsertOnEnter are
set you can go in and out of the terminal buffer while never leaving insert
mode.
>
let g:ConqueTerm_CWInsert = 0
<
3.2.4 Execute current file in Conque *ConqueTerm_ExecFileKey*
Press this key to execute the file you're currently editing in a Conque
buffer. Is equivelent to running the command :ConqueTermSplit YOUR_FILE. Your
file must be executable for this command to work correctly.
>
let g:ConqueTerm_ExecFileKey = '<F11>'
<
3.2.5 Send current file contents to Conque *ConqueTerm_SendFileKey*
Press this key to send your entire file contents to the most recently opened
Conque buffer as keyboard input.
>
let g:ConqueTerm_SendFileKey = '<F10>'
<
3.2.6 Send selected text to Conque *ConqueTerm_SendVisKey*
Use this key to send the currently selected text to the most recently created
Conque buffer.
>
let g:ConqueTerm_SendVisKey = '<F9>'
<
3.2.7 Function Keys *ConqueTerm_SendFunctionKeys*
By default, function keys (the F1-F12 row at the top of your keyboard) are not
passed to the terminal. Set this option to 1 to send these key events.
Note: Unless you configured |ConqueTerm_SendVisKey| and |ConqueTerm_ToggleKey|
to use different keys, <F8> and <F9> will not be sent to the terminal even if
you set this option to 1.
>
let g:ConqueTerm_SendFunctionKeys = 0
<
3.3 Unix *conque-config-unix*
3.3.1 Choose your terminal type, Unix ONLY *ConqueTerm_TERM*
Use this option to tell Conque what type of terminal it should identify itself
as. Conque officially uses the more limited VT100 terminal type for
developement and testing, although it supports some more advanced features
such as colors and title strings.
You can change this setting to a more advanced type, namely 'xterm', but your
results may vary depending on which programs you're running.
>
let g:ConqueTerm_TERM = 'vt100'
<
3.4 Windows *conque-config-windows*
3.4.1 Python executable, Windows ONLY *ConqueTerm_PyExe*
The Windows version of Conque needs to know the path to the python.exe
executable for the version of Python Conque is using. If you installed Python
in the default location, or added the Python directory to your system path,
Conque should be able to find python.exe without you changing this variable.
For example, you might set this to 'C:\Program Files\Python27\python.exe'
>
let g:ConqueTerm_PyExe = ''
<
3.4.2 Windows character code page *ConqueTerm_CodePage*
Set the "code page" Windows will use for your console. Leave this value set to
zero to use the environment code page.
Note: Displaying unicode characters on Conque for Windows needs work.
>
let g:ConqueTerm_CodePage = 0
<
3.4.3 Terminal color method, Windows ONLY *ConqueTerm_ColorMode*
Vim syntax highlighting by coordinate (e.g. the 3-7th characters on the 42nd
line) can be very slow. If you set this variable to 'conceal', you can use
the new conceal feature to render terminal colors. Requires Vim 7.3 and only
works on the Windows version of Conque. This will make colors render faster,
however it will also add hidden characters to the screen, which may be
annoying if you're copying and pasting terminal output out of the Conque
buffer. Set this to an empty string '' to disable concealed highlighting.
>
let g:ConqueTerm_ColorMode = 'conceal'
<
==============================================================================
4. VimScript API (Beta) *conque-term-api*
The Conque scripting API allows you to create and interact with Conque
terminals with the VimScript language. This API is still in beta stage.
4.1 conque_term#open({command}, [buf_opts], [remain]) *conque-term-open*
The open() function will create a new terminal buffer and start your command.
The {command} must be an executable, either an absolute path or relative to
your system path.
You can pass in a list of vim commands [buf_opts] which will be executed after
the new buffer is created but before the command is started. These are
typically commands to alter the size, position or configuration of the buffer
window.
Note: If you don't pass in a command such as 'split', the terminal will open
in the current buffer.
If you don't want the new terminal buffer to become the new active buffer, set
[remain] to 1. Only works if you create a split screen using [options].
Returns a Conque terminal object.
Examples:
>
let my_terminal = conque_term#open('/bin/bash')
let my_terminal = conque_term#open('ipython', ['split', 'resize 20'], 1)
<
4.2 conque_term#subprocess({command}) *conque-term-subprocess*
Starts a new subprocess with your {command}, but no terminal buffer is ever
created. This may be useful if you need asynchronous interaction with a
subprocess, but want to handle the output on your own.
Returns a Conque terminal object.
Example:
>
let my_subprocess = conque_term#subprocess('tail -f /var/log/foo.log')
<
4.3 conque_term#get_instance( [terminal_number] ) *conque-term-get-instance*
Use the get_instance() function to retrieve an existing terminal object. The
terminal could have been created either with the user command :ConqueTerm or
with an API call to conque_term#open() or subprocess().
Use the optional [terminal_number] to retrieve a specific terminal instance.
Otherwise if the current buffer is a Conque terminal, it will be returned,
else the most recently created terminal. The terminal number is what you see
at the end of a terminal buffer name, e.g. "bash - 2".
Returns a Conque terminal object.
Example:
>
nnoremap <F4> :call conque_term#get_instance().writeln('clear')<CR>
<
4.4 CONQUE_OBJECT.write({text}) *conque-term-write*
Once you have a terminal object from open(), subprocess() or get_instance()
you can send text input to it with the write() method.
No return value.
Examples:
>
call my_terminal.write("whoami\n")
call my_terminal.write("\<C-c>")
<
4.5 CONQUE_OBJECT.writeln({text}) *conque-term-writeln*
The same as write() except adds a \n character to the end if your input.
Examples:
>
call my_subprocess.writeln('make')
<
4.6 CONQUE_OBJECT.read( [timeout], [update_buffer] ) *conque-term-read*
Read new output from a Conque terminal subprocess. New output will be returned
as a string, and the terminal buffer will also be updated by default.
If you are reading immediately after calling the write() method, you may want
to wait [timeout] milliseconds for output to be ready.
If you want to prevent the output from being displayed in the terminal buffer,
set [update_buffer] to 0. This option has no effect if the terminal was
created with the subprocess() function, since there never is a buffer to
update.
Returns output string.
Note: The terminal buffer will not automatically scroll down if the new output
extends beyond the bottom of the visible buffer. Vim doesn't allow "unfocused"
buffers to be scrolled at the current version, although hopefully this will
change.
Examples:
>
call my_terminal.writeln('whoami')
let output = my_terminal.read(500)
call my_terminal.writeln('ls -lha')
let output = my_terminal.read(1000, 1)
<
4.7 CONQUE_OBJECT.set_callback( {funcname} ) *conque-term-set-callback*
Register a callback function for this subprocess instance. This function will
automatically be called whenever new output is available. Only practical with
subprocess() objects.
Conque checkes for new subprocess output once a second when Vim is idle. If
new output is found your function will be called.
Pass in the callback function name {funcname} as a string.
No return value.
Note: this method requires the g:ConqueTerm_ReadUnfocused option to be set.
Note: this method is experimental, results may vary.
Example:
>
let sp = conque_term#subprocess('tail -f /home/joe/log/error_log')
function! MyErrorAlert(output)
echo a:output
endfunction
call sp.set_callback('MyErrorAlert')
<
4.8 CONQUE_OBJECT.close() *conque-term-close*
Kill your terminal subprocess. Sends the ABORT signal. You probably want to
close your subprocess in a more graceful manner with the write() method, but
this can be used when needed. Does not close the terminal buffer, if it
exists.
This method will be called on all existing Conque subprocesses when Vim exits.
Example:
>
let term = conque_term#open('ping google.com', ['belowright split'])
call term.read(5000)
call term.close()
<
4.9 Registering functions *conque-term-events*
Conque provides the option to register callback functions which will be
executed at several different events. The currently available events are:
after_startup After your application has loaded into the buffer.
buffer_enter When you switch to a Conque buffer.
buffer_leave When you leave a Conque buffer.
You may use the function conque_term#register_function(event, function_name)
to add additional hooks at a particular event. The second argument should be
the name of a callback function which has one parameter, the current
terminal object (see|conque-term-api|for more about terminal objects).
For example:
>
function MyConqueStartup(term)
" set buffer syntax using the name of the program currently running
let syntax_associations = { 'ipython': 'python', 'irb': 'ruby' }
if has_key(syntax_associations, a:term.program_name)
execute 'setlocal syntax=' . syntax_associations[a:term.program_name]
else
execute 'setlocal syntax=' . a:term.program_name
endif
" shrink window height to 10 rows
resize 10
" silly example of terminal api usage
if a:term.program_name == 'bash'
call a:term.writeln('svn up ~/projects/*')
endif
endfunction
call conque_term#register_function('after_startup', 'MyConqueStartup')
<
==============================================================================
5. Misc *conque-term-misc*
5.1 Known bugs *conque-term-bugs*
The following are known limitations:
- Font/color highlighting is imperfect and slow. If you don't care about
color in your shell, set g:ConqueTerm_Color = 0 in your .vimrc
- Conque only supports the extended ASCII character set for input, not utf-8.
- VT100 escape sequence support is not complete.
- Alt/Meta key support in Vim isn't great in general, and conque is no
exception. Pressing <Esc><Esc>x or <Esc><M-x> instead of <M-x> works in
most cases.
5.2 Contribute *conque-term-contribute*
The two contributions most in need are improvements to Vim itself. I currently
use hacks to capture key press input from the user, and to poll the terminal
for more output. The Vim todo.txt document lists proposed improvements to give
users this behavior without hacks. Having a key press event should allow
Conque to work with multi- byte input. If you are a Vim developer, please
consider prioritizing these two items:
- todo.txt (Autocommands, line ~3137)
8 Add an event like CursorHold that is triggered repeatedly, not just
once after typing something.
5.3 Feedback *conque-term-feedback*
Bugs, suggestions and patches are all welcome.
For more information visit http://conque.googlecode.com
Check out the latest from svn at http://conque.googlecode.com/svn/trunk/
vim:tw=78:ts=8:ft=help:norl:

71
doc/open_terminal.txt Normal file
View File

@ -0,0 +1,71 @@
*open-terminal* Open Terminal, Filemanager for various platform
Open Terminal Help File
Introduction |open-terminal-introduction|
Commmands |open-terminal-commands|
Requires |open-terminal-requires|
Key map examples |open-terminal-keymap|
Changelog |open-terminal-changelog|
About |open-terminal-about|
==============================================================================
Introduction *open-terminal-introduction*
Some vim user want to shell like emacs's eshell. But vim don't support shell,
terminal interface in vim (at least 7.x version).
In this situation, I use native terminal software open script for my various
working platforms.
==============================================================================
Commmands *open-terminal-commands*
*OpenTerminal*
:OpenTerminal Open native terminal sw. Check |requires| list
*OpenFilemanager*
:OpenFilemanager Open native file manager. Check |requires| list
==============================================================================
Map key examples *open-terminal-keymap*
>
nnoremap <silent> <F9> :OpenTerminal<CR>
nnoremap <silent> <F10> :OpenFilemanager<CR><CR>
<
==============================================================================
Requires (per platform) *open-terminal-requires*
I use Mac, Gnome, Windows(gvim). I don't test in KDE environment.
Platform Terminal File manager ~
>
Mac Terminal.app Finder
(with Applescript)
Gnome gnome-terminal nautilus
KDE konsole konqueror
Windows cmd explorer
(with start)
cygwin bash explorer
<
==============================================================================
Changelog *open-terminal-changelog*
0.1:
- First release used script for everyone.
==============================================================================
About *open-terminal-about*
Copyright (c) 2009 by neocoin ~
File: open_terminal.vim
Author: Sangmin Ryu (neocoin@gmail.com)
Date: Tue Dec 22 13:33:32 PST 2009
License: The MIT License
==============================================================================
vim:tw=78:ts=8:ft=help:norl:

461
doc/pi_getscript.txt Normal file
View File

@ -0,0 +1,461 @@
*pi_getscript.txt* For Vim version 7.0. Last change: 2011 May 31
>
GETSCRIPT REFERENCE MANUAL by Charles E. Campbell, Jr.
<
Authors: Charles E. Campbell, Jr. <NdrOchip@ScampbellPfamilyA.Mbiz>
(remove NOSPAM from the email address)
*GetLatestVimScripts-copyright*
Copyright: (c) 2004-2010 by Charles E. Campbell, Jr. *glvs-copyright*
The VIM LICENSE applies to getscript.vim and
pi_getscript.txt (see |copyright|) except use
"getscript" instead of "Vim". No warranty, express or implied.
Use At-Your-Own-Risk.
Getscript is a plugin that simplifies retrieval of the latest versions of the
scripts that you yourself use! Typing |:GLVS| will invoke getscript; it will
then use the <GetLatestVimScripts.dat> (see |GetLatestVimScripts_dat|) file to
get the latest versions of scripts listed therein from http://vim.sf.net/.
==============================================================================
1. Contents *glvs-contents* *glvs* *getscript*
*GetLatestVimScripts*
1. Contents........................................: |glvs-contents|
2. GetLatestVimScripts -- Getting Started..........: |glvs-install|
3. GetLatestVimScripts Usage.......................: |glvs-usage|
4. GetLatestVimScripts Data File...................: |glvs-data|
5. GetLatestVimScripts Friendly Plugins............: |glvs-plugins|
6. GetLatestVimScripts AutoInstall.................: |glvs-autoinstall|
7. GetLatestViMScripts Options.....................: |glvs-options|
8. GetLatestVimScripts Algorithm...................: |glvs-alg|
9. GetLatestVimScripts History.....................: |glvs-hist|
==============================================================================
2. GetLatestVimScripts -- Getting Started *getscript-start*
*getlatestvimscripts-install*
VERSION FROM VIM DISTRIBUTION *glvs-dist-install*
Vim 7.0 does not include the GetLatestVimScripts.dist file which
serves as an example and a template. So, you'll need to create
your own! See |GetLatestVimScripts_dat|.
VERSION FROM VIM SF NET *glvs-install*
NOTE: The last step, that of renaming/moving the GetLatestVimScripts.dist
file, is for those who have just downloaded GetLatestVimScripts.tar.bz2 for
the first time.
The GetLatestVimScripts.dist file serves as an example and a template for your
own personal list. Feel free to remove all the scripts mentioned within it;
the "important" part of it is the first two lines.
Your computer needs to have wget or curl for GetLatestVimScripts to do its work.
1. if compressed: gunzip getscript.vba.gz
2. Unix:
vim getscript.vba
:so %
:q
cd ~/.vim/GetLatest
mv GetLatestVimScripts.dist GetLatestVimScripts.dat
(edit GetLatestVimScripts.dat to install your own personal
list of desired plugins -- see |GetLatestVimScripts_dat|)
3. Windows:
vim getscript.vba
:so %
:q
cd **path-to-vimfiles**/GetLatest
mv GetLatestVimScripts.dist GetLatestVimScripts.dat
(edit GetLatestVimScripts.dat to install your own personal
list of desired plugins -- see |GetLatestVimScripts_dat|)
==============================================================================
3. GetLatestVimScripts Usage *glvs-usage* *:GLVS*
Unless it has been defined elsewhere, >
:GLVS
will invoke GetLatestVimScripts(). If some other plugin has defined that
command, then you may type
>
:GetLatestVimScripts
<
The script will attempt to update and, if permitted, will automatically
install scripts from http://vim.sourceforge.net/. To do so it will peruse a
file,
>
.vim/GetLatest/GetLatestVimScripts.dat (unix)
<
or >
..wherever..\vimfiles\GetLatest\GetLatestVimScripts.dat (windows)
(see |glvs-data|), and examine plugins in your [.vim|vimfiles]/plugin
directory (see |glvs-plugins|).
Scripts which have been downloaded will appear in the
~/.vim/GetLatest (unix) or ..wherever..\vimfiles\GetLatest (windows)
subdirectory. GetLatestVimScripts will attempt to automatically
install them if you have the following line in your <.vimrc>: >
let g:GetLatestVimScripts_allowautoinstall=1
The <GetLatestVimScripts.dat> file will be automatically be updated to
reflect the latest version of script(s) so downloaded.
(also see |glvs-options|)
==============================================================================
4. GetLatestVimScripts Data File *getscript-data* *glvs-data*
*:GetLatestVimScripts_dat*
The data file <GetLatestVimScripts.dat> must have for its first two lines
the following text:
>
ScriptID SourceID Filename
--------------------------
<
Following those two lines are three columns; the first two are numeric
followed by a text column. The GetLatest/GetLatestVimScripts.dist file
contains an example of such a data file. Anything following a #... is
ignored, so you may embed comments in the file.
The first number on each line gives the script's ScriptID. When you're about
to use a web browser to look at scripts on http://vim.sf.net/, just before you
click on the script's link, you'll see a line resembling
http://vim.sourceforge.net/scripts/script.php?script_id=40
The "40" happens to be a ScriptID that GetLatestVimScripts needs to
download the associated page, and is assigned by vim.sf.net itself
during initial uploading of the plugin.
The second number on each line gives the script's SourceID. The SourceID
records the count of uploaded scripts as determined by vim.sf.net; hence it
serves to indicate "when" a script was uploaded. Setting the SourceID to 1
insures that GetLatestVimScripts will assume that the script it has is
out-of-date.
The SourceID is extracted by GetLatestVimScripts from the script's page on
vim.sf.net; whenever it is greater than the one stored in the
GetLatestVimScripts.dat file, the script will be downloaded
(see |GetLatestVimScripts_dat|).
If your script's author has included a special comment line in his/her plugin,
the plugin itself will be used by GetLatestVimScripts to build your
<GetLatestVimScripts.dat> file, including any dependencies on other scripts it
may have. As an example, consider: >
" GetLatestVimScripts: 884 1 :AutoInstall: AutoAlign.vim
This comment line tells getscript.vim to check vimscript #884 and that the
script is automatically installable. Getscript will also use this line to
help build the GetLatestVimScripts.dat file, by including a line such as: >
884 1 :AutoInstall: AutoAlign.vim
<
assuming that such a line isn't already in GetLatestVimScripts.dat file.
See |glvs-plugins| for more. Thus, GetLatestVimScripts thus provides a
comprehensive ability to keep your plugins up-to-date!
In summary:
* Optionally tell getscript that it is allowed to build/append a
GetLatestVimScripts.dat file based upon already installed plugins: >
let g:GetLatestVimScripts_allowautoinstall=1
<
* A line such as >
" GetLatestVimScripts: 884 1 :AutoInstall: AutoAlign.vim
< in an already-downloaded plugin constitutes the concurrence of the
plugin author that getscript may do AutoInstall. Not all plugins
may be AutoInstall-able, and the plugin's author is best situated
to know whether or not his/her plugin will AutoInstall properly.
* A line such as >
884 1 :AutoInstall: AutoAlign.vim
< in your GetLatestVimScripts.dat file constitutes your permission
to getscript to do AutoInstall. AutoInstall requires both your
and the plugin author's permission. See |GetLatestVimScripts_dat|.
*GetLatestVimScripts_dat*
As an example of a <GetLatestVimScripts.dat> file:
>
ScriptID SourceID Filename
--------------------------
294 1 :AutoInstall: Align.vim
120 2 Decho.vim
40 3 DrawIt.tar.gz
451 4 EasyAccents.vim
195 5 engspchk.vim
642 6 GetLatestVimScripts.vim
489 7 Manpageview.vim
<
Note: the first two lines are required, but essentially act as comments.
==============================================================================
5. GetLatestVimScripts Friendly Plugins *getscript-plugins* *glvs-plugins*
(this section is for plugin authors)~
If a plugin author includes the following comment anywhere in their plugin,
GetLatestVimScripts will find it and use it to automatically build the user's
GetLatestVimScripts.dat files:
>
src_id
v
" GetLatestVimScripts: ### ### yourscriptname
^
scriptid
<
As an author, you should include such a line in to refer to your own script
plus any additional lines describing any plugin dependencies it may have.
Same format, of course!
If your command is auto-installable (see |glvs-autoinstall|), and most scripts
are, then you may include :AutoInstall: just before "yourscriptname":
>
src_id
v
" GetLatestVimScripts: ### ### :AutoInstall: yourscriptname
^
scriptid
<
NOTE: The :AutoInstall: feature requires both the plugin author's and~
the user's permission to operate!~
GetLatestVimScripts commands for those scripts are then appended, if not
already present, to the user's GetLatest/GetLatestVimScripts.dat file. It is
a relatively painless way to automate the acquisition of any scripts your
plugins depend upon.
Now, as an author, you probably don't want GetLatestVimScripts to download
your own scripts atop your own copy, thereby overwriting your not-yet-released
hard work. GetLatestVimScripts provides a solution for this: put
>
0 0 yourscriptname
<
into your <GetLatestVimScripts.dat> file and GetLatestVimScripts will skip
examining the "yourscriptname" scripts for those GetLatestVimScripts comment
lines. As a result, those lines won't be inadvertently installed into your
<GetLatestVimScripts.dat> file and subsequently used to download your own
scripts. This is especially important to do if you've included the
:AutoInstall: option.
Be certain to use the same "yourscriptname" in the "0 0 yourscriptname" line
as you've used in your GetLatestVimScripts comment!
==============================================================================
6. GetLatestVimScripts AutoInstall *getscript-autoinstall*
*glvs-autoinstall*
GetLatestVimScripts now supports "AutoInstall". Not all scripts are
supportive of auto-install, as they may have special things you need to do to
install them (please refer to the script's "install" directions). On the
other hand, most scripts will be auto-installable.
To let GetLatestVimScripts do an autoinstall, the data file's comment field
should begin with (surrounding blanks are ignored): >
:AutoInstall:
<
Both colons are needed, and it should begin the comment (yourscriptname)
field.
One may prevent any autoinstalling by putting the following line in your
<.vimrc>: >
let g:GetLatestVimScripts_allowautoinstall= 0
<
With :AutoInstall: enabled, as it is by default, files which end with
---.tar.bz2 : decompressed & untarred in .vim/ directory
---.vba.bz2 : decompressed in .vim/ directory, then vimball handles it
---.vim.bz2 : decompressed & moved into .vim/plugin directory
---.tar.gz : decompressed & untarred in .vim/ directory
---.vba.gz : decompressed in .vim/ directory, then vimball handles it
---.vim.gz : decompressed & moved into .vim/plugin directory
---.vba : unzipped in .vim/ directory
---.vim : moved to .vim/plugin directory
---.zip : unzipped in .vim/ directory
and which merely need to have their components placed by the untar/gunzip or
move-to-plugin-directory process should be auto-installable. Vimballs, of
course, should always be auto-installable.
When is a script not auto-installable? Let me give an example:
.vim/after/syntax/blockhl.vim
The <blockhl.vim> script provides block highlighting for C/C++ programs; it is
available at:
http://vim.sourceforge.net/scripts/script.php?script_id=104
Currently, vim's after/syntax only supports by-filetype scripts (in
blockhl.vim's case, that's after/syntax/c.vim). Hence, auto-install would
possibly overwrite the current user's after/syntax/c.vim file.
In my own case, I use <aftersyntax.vim> (renamed to after/syntax/c.vim) to
allow a after/syntax/c/ directory:
http://vim.sourceforge.net/scripts/script.php?script_id=1023
The script allows multiple syntax files to exist separately in the
after/syntax/c subdirectory. I can't bundle aftersyntax.vim in and build an
appropriate tarball for auto-install because of the potential for the
after/syntax/c.vim contained in it to overwrite a user's c.vim.
==============================================================================
7. GetLatestVimScripts Options *glvs-options*
>
g:GetLatestVimScripts_wget
< default= "wget"
This variable holds the name of the command for obtaining
scripts.
>
g:GetLatestVimScripts_options
< default= "-q -O"
This variable holds the options to be used with the
g:GetLatestVimScripts_wget command.
>
g:GetLatestVimScripts_allowautoinstall
< default= 1
This variable indicates whether GetLatestVimScripts is allowed
to attempt to automatically install scripts. Furthermore, the
plugin author has to have explicitly indicated that his/her
plugin is automatically installable (via the :AutoInstall:
keyword in the GetLatestVimScripts comment line).
>
g:GetLatestVimScripts_autoinstalldir
< default= $HOME/.vim (linux)
default= $HOME/vimfiles (windows)
Override where :AutoInstall: scripts will be installed.
Doesn't override vimball installation.
==============================================================================
8. GetLatestVimScripts Algorithm *glvs-algorithm* *glvs-alg*
The Vim sourceforge page dynamically creates a page by keying off of the
so-called script-id. Within the webpage of
http://vim.sourceforge.net/scripts/script.php?script_id=40
is a line specifying the latest source-id (src_id). The source identifier
numbers are always increasing, hence if the src_id is greater than the one
recorded for the script in GetLatestVimScripts then it's time to download a
newer copy of that script.
GetLatestVimScripts will then download the script and update its internal
database of script ids, source ids, and scriptnames.
The AutoInstall process will:
Move the file from GetLatest/ to the following directory
Unix : $HOME/.vim
Windows: $HOME\vimfiles
if the downloaded file ends with ".bz2"
bunzip2 it
else if the downloaded file ends with ".gz"
gunzip it
if the resulting file ends with ".zip"
unzip it
else if the resulting file ends with ".tar"
tar -oxvf it
else if the resulting file ends with ".vim"
move it to the plugin subdirectory
==============================================================================
9. GetLatestVimScripts History *getscript-history* *glvs-hist* {{{1
v33 May 31, 2011 : * using fnameescape() instead of escape()
* *.xz support
v32 Jun 19, 2010 : * (Jan Steffens) added support for xz compression
v31 Jun 29, 2008 : * (Bill McCarthy) fixed having hls enabled with getscript
* (David Schaefer) the acd option interferes with vimballs
Solution: bypass the acd option
v30 Jun 13, 2008 : * GLVS now checks for existence of fnameescape() and will
issue an error message if it is not supported
v29 Jan 07, 2008 : * Bram M pointed out that cpo is a global option and that
getscriptPlugin.vim was setting it but not restoring it.
v28 Jan 02, 2008 : * improved shell quoting character handling, cygwin
interface, register-a bypass
Oct 29, 2007 * Bill McCarthy suggested a change to getscript that avoids
creating pop-up windows
v24 Apr 16, 2007 : * removed save&restore of the fo option during script
loading
v23 Nov 03, 2006 : * ignores comments (#...)
* handles vimballs
v22 Oct 13, 2006 : * supports automatic use of curl if wget is not
available
v21 May 01, 2006 : * now takes advantage of autoloading.
v20 Dec 23, 2005 : * Eric Haarbauer found&fixed a bug with unzip use;
unzip needs the -o flag to overwrite.
v19 Nov 28, 2005 : * v18's GetLatestVimScript line accessed the wrong
script! Fixed.
v18 Mar 21, 2005 : * bugfix to automatic database construction
* bugfix - nowrapscan caused an error
(tnx to David Green for the fix)
Apr 01, 2005 * if shell is bash, "mv" instead of "ren" used in
:AutoInstall:s, even though its o/s is windows
Apr 01, 2005 * when downloading errors occurred, GLVS was
terminating early. It now just goes on to trying
the next script (after trying three times to
download a script description page)
Apr 20, 2005 * bugfix - when a failure to download occurred,
GetLatestVimScripts would stop early and claim that
everything was current. Fixed.
v17 Aug 25, 2004 : * g:GetLatestVimScripts_allowautoinstall, which
defaults to 1, can be used to prevent all
:AutoInstall:
v16 Aug 25, 2004 : * made execution of bunzip2/gunzip/tar/zip silent
* fixed bug with :AutoInstall: use of helptags
v15 Aug 24, 2004 : * bugfix: the "0 0 comment" download prevention wasn't
always preventing downloads (just usually). Fixed.
v14 Aug 24, 2004 : * bugfix -- helptags was using dotvim, rather than
s:dotvim. Fixed.
v13 Aug 23, 2004 : * will skip downloading a file if its scriptid or srcid
is zero. Useful for script authors; that way their
own GetLatestVimScripts activity won't overwrite
their scripts.
v12 Aug 23, 2004 : * bugfix - a "return" got left in the distribution that
was intended only for testing. Removed, now works.
* :AutoInstall: implemented
v11 Aug 20, 2004 : * GetLatestVimScripts is now a plugin:
* :GetLatestVimScripts command
* (runtimepath)/GetLatest/GetLatestVimScripts.dat
now holds scripts that need updating
v10 Apr 19, 2004 : * moved history from script to doc
v9 Jan 23, 2004 : windows (win32/win16/win95) will use
double quotes ("") whereas other systems will use
single quotes ('') around the urls in calls via wget
v8 Dec 01, 2003 : makes three tries at downloading
v7 Sep 02, 2003 : added error messages if "Click on..." or "src_id="
not found in downloaded webpage
Uses t_ti, t_te, and rs to make progress visible
v6 Aug 06, 2003 : final status messages now display summary of work
( "Downloaded someqty scripts" or
"Everything was current")
Now GetLatestVimScripts is careful about downloading
GetLatestVimScripts.vim itself!
(goes to <NEW_GetLatestVimScripts.vim>)
v5 Aug 04, 2003 : missing an endif near bottom
v4 Jun 17, 2003 : redraw! just before each "considering" message
v3 May 27, 2003 : Protects downloaded files from errant shell
expansions with single quotes: '...'
v2 May 14, 2003 : extracts name of item to be obtained from the
script file. Uses it instead of comment field
for output filename; comment is used in the
"considering..." line and is now just a comment!
* Fixed a bug: a string-of-numbers is not the
same as a number, so I added zero to them
and they became numbers. Fixes comparison.
==============================================================================
vim:tw=78:ts=8:ft=help:fdm=marker

1501
doc/taglist.txt Normal file

File diff suppressed because it is too large Load Diff

602
doc/tags Normal file
View File

@ -0,0 +1,602 @@
'NERDAllowAnyVisualDelims' NERD_commenter.txt /*'NERDAllowAnyVisualDelims'*
'NERDBlockComIgnoreEmpty' NERD_commenter.txt /*'NERDBlockComIgnoreEmpty'*
'NERDChristmasTree' NERD_tree.txt /*'NERDChristmasTree'*
'NERDCommentWholeLinesInVMode' NERD_commenter.txt /*'NERDCommentWholeLinesInVMode'*
'NERDCompactSexyComs' NERD_commenter.txt /*'NERDCompactSexyComs'*
'NERDCreateDefaultMappings' NERD_commenter.txt /*'NERDCreateDefaultMappings'*
'NERDDefaultNesting' NERD_commenter.txt /*'NERDDefaultNesting'*
'NERDLPlace' NERD_commenter.txt /*'NERDLPlace'*
'NERDMenuMode' NERD_commenter.txt /*'NERDMenuMode'*
'NERDRPlace' NERD_commenter.txt /*'NERDRPlace'*
'NERDRemoveAltComs' NERD_commenter.txt /*'NERDRemoveAltComs'*
'NERDRemoveExtraSpaces' NERD_commenter.txt /*'NERDRemoveExtraSpaces'*
'NERDSpaceDelims' NERD_commenter.txt /*'NERDSpaceDelims'*
'NERDTreeAutoCenter' NERD_tree.txt /*'NERDTreeAutoCenter'*
'NERDTreeAutoCenterThreshold' NERD_tree.txt /*'NERDTreeAutoCenterThreshold'*
'NERDTreeBookmarksFile' NERD_tree.txt /*'NERDTreeBookmarksFile'*
'NERDTreeCaseSensitiveSort' NERD_tree.txt /*'NERDTreeCaseSensitiveSort'*
'NERDTreeChDirMode' NERD_tree.txt /*'NERDTreeChDirMode'*
'NERDTreeDirArrows' NERD_tree.txt /*'NERDTreeDirArrows'*
'NERDTreeHighlightCursorline' NERD_tree.txt /*'NERDTreeHighlightCursorline'*
'NERDTreeHijackNetrw' NERD_tree.txt /*'NERDTreeHijackNetrw'*
'NERDTreeIgnore' NERD_tree.txt /*'NERDTreeIgnore'*
'NERDTreeMinimalUI' NERD_tree.txt /*'NERDTreeMinimalUI'*
'NERDTreeMouseMode' NERD_tree.txt /*'NERDTreeMouseMode'*
'NERDTreeQuitOnOpen' NERD_tree.txt /*'NERDTreeQuitOnOpen'*
'NERDTreeShowBookmarks' NERD_tree.txt /*'NERDTreeShowBookmarks'*
'NERDTreeShowFiles' NERD_tree.txt /*'NERDTreeShowFiles'*
'NERDTreeShowHidden' NERD_tree.txt /*'NERDTreeShowHidden'*
'NERDTreeShowLineNumbers' NERD_tree.txt /*'NERDTreeShowLineNumbers'*
'NERDTreeSortOrder' NERD_tree.txt /*'NERDTreeSortOrder'*
'NERDTreeStatusline' NERD_tree.txt /*'NERDTreeStatusline'*
'NERDTreeWinPos' NERD_tree.txt /*'NERDTreeWinPos'*
'NERDTreeWinSize' NERD_tree.txt /*'NERDTreeWinSize'*
'NERDUsePlaceHolders' NERD_commenter.txt /*'NERDUsePlaceHolders'*
'Tlist_Auto_Highlight_Tag' taglist.txt /*'Tlist_Auto_Highlight_Tag'*
'Tlist_Auto_Open' taglist.txt /*'Tlist_Auto_Open'*
'Tlist_Auto_Update' taglist.txt /*'Tlist_Auto_Update'*
'Tlist_Close_On_Select' taglist.txt /*'Tlist_Close_On_Select'*
'Tlist_Compact_Format' taglist.txt /*'Tlist_Compact_Format'*
'Tlist_Ctags_Cmd' taglist.txt /*'Tlist_Ctags_Cmd'*
'Tlist_Display_Prototype' taglist.txt /*'Tlist_Display_Prototype'*
'Tlist_Display_Tag_Scope' taglist.txt /*'Tlist_Display_Tag_Scope'*
'Tlist_Enable_Fold_Column' taglist.txt /*'Tlist_Enable_Fold_Column'*
'Tlist_Exit_OnlyWindow' taglist.txt /*'Tlist_Exit_OnlyWindow'*
'Tlist_File_Fold_Auto_Close' taglist.txt /*'Tlist_File_Fold_Auto_Close'*
'Tlist_GainFocus_On_ToggleOpen' taglist.txt /*'Tlist_GainFocus_On_ToggleOpen'*
'Tlist_Highlight_Tag_On_BufEnter' taglist.txt /*'Tlist_Highlight_Tag_On_BufEnter'*
'Tlist_Inc_Winwidth' taglist.txt /*'Tlist_Inc_Winwidth'*
'Tlist_Max_Submenu_Items' taglist.txt /*'Tlist_Max_Submenu_Items'*
'Tlist_Max_Tag_Length' taglist.txt /*'Tlist_Max_Tag_Length'*
'Tlist_Process_File_Always' taglist.txt /*'Tlist_Process_File_Always'*
'Tlist_Show_Menu' taglist.txt /*'Tlist_Show_Menu'*
'Tlist_Show_One_File' taglist.txt /*'Tlist_Show_One_File'*
'Tlist_Sort_Type' taglist.txt /*'Tlist_Sort_Type'*
'Tlist_Use_Horiz_Window' taglist.txt /*'Tlist_Use_Horiz_Window'*
'Tlist_Use_Right_Window' taglist.txt /*'Tlist_Use_Right_Window'*
'Tlist_Use_SingleClick' taglist.txt /*'Tlist_Use_SingleClick'*
'Tlist_WinHeight' taglist.txt /*'Tlist_WinHeight'*
'Tlist_WinWidth' taglist.txt /*'Tlist_WinWidth'*
'loaded_nerd_comments' NERD_commenter.txt /*'loaded_nerd_comments'*
'loaded_nerd_tree' NERD_tree.txt /*'loaded_nerd_tree'*
:Align Align.txt /*:Align*
:AlignCenter textformat.txt /*:AlignCenter*
:AlignCtrl Align.txt /*:AlignCtrl*
:AlignJustify textformat.txt /*:AlignJustify*
:AlignLeft textformat.txt /*:AlignLeft*
:AlignMapsClean Align.txt /*:AlignMapsClean*
:AlignRight textformat.txt /*:AlignRight*
:CVSEdit vcscommand.txt /*:CVSEdit*
:CVSEditors vcscommand.txt /*:CVSEditors*
:CVSUnedit vcscommand.txt /*:CVSUnedit*
:CVSWatch vcscommand.txt /*:CVSWatch*
:CVSWatchAdd vcscommand.txt /*:CVSWatchAdd*
:CVSWatchOff vcscommand.txt /*:CVSWatchOff*
:CVSWatchOn vcscommand.txt /*:CVSWatchOn*
:CVSWatchRemove vcscommand.txt /*:CVSWatchRemove*
:CVSWatchers vcscommand.txt /*:CVSWatchers*
:GLVS pi_getscript.txt /*:GLVS*
:GetLatestVimScripts_dat pi_getscript.txt /*:GetLatestVimScripts_dat*
:NERDTree NERD_tree.txt /*:NERDTree*
:NERDTreeClose NERD_tree.txt /*:NERDTreeClose*
:NERDTreeFind NERD_tree.txt /*:NERDTreeFind*
:NERDTreeFromBookmark NERD_tree.txt /*:NERDTreeFromBookmark*
:NERDTreeMirror NERD_tree.txt /*:NERDTreeMirror*
:NERDTreeToggle NERD_tree.txt /*:NERDTreeToggle*
:TChangesetOpen trac.txt /*:TChangesetOpen*
:TTAddComment trac.txt /*:TTAddComment*
:TTClearAllFilters trac.txt /*:TTClearAllFilters*
:TTClearFilter trac.txt /*:TTClearFilter*
:TTFilterComponent trac.txt /*:TTFilterComponent*
:TTFilterMilestone trac.txt /*:TTFilterMilestone*
:TTFilterNoMilestone trac.txt /*:TTFilterNoMilestone*
:TTFilterNoOwner trac.txt /*:TTFilterNoOwner*
:TTFilterOwner trac.txt /*:TTFilterOwner*
:TTFilterPriority trac.txt /*:TTFilterPriority*
:TTFilterResolution trac.txt /*:TTFilterResolution*
:TTFilterSeverity trac.txt /*:TTFilterSeverity*
:TTFilterStatus trac.txt /*:TTFilterStatus*
:TTFilterType trac.txt /*:TTFilterType*
:TTIgnoreComponent trac.txt /*:TTIgnoreComponent*
:TTIgnoreMilestone trac.txt /*:TTIgnoreMilestone*
:TTIgnoreNoMilestone trac.txt /*:TTIgnoreNoMilestone*
:TTIgnoreNoOwner trac.txt /*:TTIgnoreNoOwner*
:TTIgnoreOwner trac.txt /*:TTIgnoreOwner*
:TTIgnorePriority trac.txt /*:TTIgnorePriority*
:TTIgnoreResolution trac.txt /*:TTIgnoreResolution*
:TTIgnoreSeverity trac.txt /*:TTIgnoreSeverity*
:TTIgnoreStatus trac.txt /*:TTIgnoreStatus*
:TTIgnoreType trac.txt /*:TTIgnoreType*
:TTLServer trac.txt /*:TTLServer*
:TTListFilters trac.txt /*:TTListFilters*
:TTOpen trac.txt /*:TTOpen*
:TTPreview trac.txt /*:TTPreview*
:TTServer trac.txt /*:TTServer*
:TTSet trac.txt /*:TTSet*
:TTSortby trac.txt /*:TTSortby*
:TTUpdateDescrption trac.txt /*:TTUpdateDescrption*
:TTimelineOpen trac.txt /*:TTimelineOpen*
:TWAddAttachment trac.txt /*:TWAddAttachment*
:TWGetAttachment trac.txt /*:TWGetAttachment*
:TWOpen trac.txt /*:TWOpen*
:TWPreview trac.txt /*:TWPreview*
:TWSave trac.txt /*:TWSave*
:TWServer trac.txt /*:TWServer*
:TWVimDiff trac.txt /*:TWVimDiff*
:TlistAddFiles taglist.txt /*:TlistAddFiles*
:TlistAddFilesRecursive taglist.txt /*:TlistAddFilesRecursive*
:TlistClose taglist.txt /*:TlistClose*
:TlistDebug taglist.txt /*:TlistDebug*
:TlistHighlightTag taglist.txt /*:TlistHighlightTag*
:TlistLock taglist.txt /*:TlistLock*
:TlistMessages taglist.txt /*:TlistMessages*
:TlistOpen taglist.txt /*:TlistOpen*
:TlistSessionLoad taglist.txt /*:TlistSessionLoad*
:TlistSessionSave taglist.txt /*:TlistSessionSave*
:TlistShowPrototype taglist.txt /*:TlistShowPrototype*
:TlistShowTag taglist.txt /*:TlistShowTag*
:TlistToggle taglist.txt /*:TlistToggle*
:TlistUndebug taglist.txt /*:TlistUndebug*
:TlistUnlock taglist.txt /*:TlistUnlock*
:TlistUpdate taglist.txt /*:TlistUpdate*
:VCSAdd vcscommand.txt /*:VCSAdd*
:VCSAnnotate vcscommand.txt /*:VCSAnnotate*
:VCSBlame vcscommand.txt /*:VCSBlame*
:VCSCommit vcscommand.txt /*:VCSCommit*
:VCSDelete vcscommand.txt /*:VCSDelete*
:VCSDiff vcscommand.txt /*:VCSDiff*
:VCSGotoOriginal vcscommand.txt /*:VCSGotoOriginal*
:VCSInfo vcscommand.txt /*:VCSInfo*
:VCSLock vcscommand.txt /*:VCSLock*
:VCSLog vcscommand.txt /*:VCSLog*
:VCSRemove vcscommand.txt /*:VCSRemove*
:VCSRevert vcscommand.txt /*:VCSRevert*
:VCSReview vcscommand.txt /*:VCSReview*
:VCSStatus vcscommand.txt /*:VCSStatus*
:VCSUnlock vcscommand.txt /*:VCSUnlock*
:VCSUpdate vcscommand.txt /*:VCSUpdate*
:VCSVimDiff vcscommand.txt /*:VCSVimDiff*
Align-copyright Align.txt /*Align-copyright*
ConqueTerm conque_term.txt /*ConqueTerm*
ConqueTerm_CWInsert conque_term.txt /*ConqueTerm_CWInsert*
ConqueTerm_CloseOnEnd conque_term.txt /*ConqueTerm_CloseOnEnd*
ConqueTerm_CodePage conque_term.txt /*ConqueTerm_CodePage*
ConqueTerm_Color conque_term.txt /*ConqueTerm_Color*
ConqueTerm_ColorMode conque_term.txt /*ConqueTerm_ColorMode*
ConqueTerm_EscKey conque_term.txt /*ConqueTerm_EscKey*
ConqueTerm_ExecFileKey conque_term.txt /*ConqueTerm_ExecFileKey*
ConqueTerm_FastMode conque_term.txt /*ConqueTerm_FastMode*
ConqueTerm_InsertOnEnter conque_term.txt /*ConqueTerm_InsertOnEnter*
ConqueTerm_PromptRegex conque_term.txt /*ConqueTerm_PromptRegex*
ConqueTerm_PyExe conque_term.txt /*ConqueTerm_PyExe*
ConqueTerm_PyVersion conque_term.txt /*ConqueTerm_PyVersion*
ConqueTerm_ReadUnfocused conque_term.txt /*ConqueTerm_ReadUnfocused*
ConqueTerm_SendFileKey conque_term.txt /*ConqueTerm_SendFileKey*
ConqueTerm_SendFunctionKeys conque_term.txt /*ConqueTerm_SendFunctionKeys*
ConqueTerm_SendVisKey conque_term.txt /*ConqueTerm_SendVisKey*
ConqueTerm_SessionSupport conque_term.txt /*ConqueTerm_SessionSupport*
ConqueTerm_StartMessages conque_term.txt /*ConqueTerm_StartMessages*
ConqueTerm_Syntax conque_term.txt /*ConqueTerm_Syntax*
ConqueTerm_TERM conque_term.txt /*ConqueTerm_TERM*
ConqueTerm_ToggleKey conque_term.txt /*ConqueTerm_ToggleKey*
GetLatestVimScripts pi_getscript.txt /*GetLatestVimScripts*
GetLatestVimScripts-copyright pi_getscript.txt /*GetLatestVimScripts-copyright*
GetLatestVimScripts_dat pi_getscript.txt /*GetLatestVimScripts_dat*
NERDComAbout NERD_commenter.txt /*NERDComAbout*
NERDComAlignedComment NERD_commenter.txt /*NERDComAlignedComment*
NERDComAltDelim NERD_commenter.txt /*NERDComAltDelim*
NERDComAppendComment NERD_commenter.txt /*NERDComAppendComment*
NERDComChangelog NERD_commenter.txt /*NERDComChangelog*
NERDComComment NERD_commenter.txt /*NERDComComment*
NERDComCredits NERD_commenter.txt /*NERDComCredits*
NERDComDefaultDelims NERD_commenter.txt /*NERDComDefaultDelims*
NERDComEOLComment NERD_commenter.txt /*NERDComEOLComment*
NERDComFunctionality NERD_commenter.txt /*NERDComFunctionality*
NERDComFunctionalityDetails NERD_commenter.txt /*NERDComFunctionalityDetails*
NERDComFunctionalitySummary NERD_commenter.txt /*NERDComFunctionalitySummary*
NERDComHeuristics NERD_commenter.txt /*NERDComHeuristics*
NERDComInsertComment NERD_commenter.txt /*NERDComInsertComment*
NERDComInstallation NERD_commenter.txt /*NERDComInstallation*
NERDComInvertComment NERD_commenter.txt /*NERDComInvertComment*
NERDComIssues NERD_commenter.txt /*NERDComIssues*
NERDComLicense NERD_commenter.txt /*NERDComLicense*
NERDComMappings NERD_commenter.txt /*NERDComMappings*
NERDComMinimalComment NERD_commenter.txt /*NERDComMinimalComment*
NERDComNERDComment NERD_commenter.txt /*NERDComNERDComment*
NERDComNestedComment NERD_commenter.txt /*NERDComNestedComment*
NERDComNesting NERD_commenter.txt /*NERDComNesting*
NERDComOptions NERD_commenter.txt /*NERDComOptions*
NERDComOptionsDetails NERD_commenter.txt /*NERDComOptionsDetails*
NERDComOptionsSummary NERD_commenter.txt /*NERDComOptionsSummary*
NERDComSexyComment NERD_commenter.txt /*NERDComSexyComment*
NERDComSexyComments NERD_commenter.txt /*NERDComSexyComments*
NERDComToggleComment NERD_commenter.txt /*NERDComToggleComment*
NERDComUncommentLine NERD_commenter.txt /*NERDComUncommentLine*
NERDComYankComment NERD_commenter.txt /*NERDComYankComment*
NERDCommenter NERD_commenter.txt /*NERDCommenter*
NERDCommenterContents NERD_commenter.txt /*NERDCommenterContents*
NERDTree NERD_tree.txt /*NERDTree*
NERDTree-? NERD_tree.txt /*NERDTree-?*
NERDTree-A NERD_tree.txt /*NERDTree-A*
NERDTree-B NERD_tree.txt /*NERDTree-B*
NERDTree-C NERD_tree.txt /*NERDTree-C*
NERDTree-C-J NERD_tree.txt /*NERDTree-C-J*
NERDTree-C-K NERD_tree.txt /*NERDTree-C-K*
NERDTree-D NERD_tree.txt /*NERDTree-D*
NERDTree-F NERD_tree.txt /*NERDTree-F*
NERDTree-I NERD_tree.txt /*NERDTree-I*
NERDTree-J NERD_tree.txt /*NERDTree-J*
NERDTree-K NERD_tree.txt /*NERDTree-K*
NERDTree-O NERD_tree.txt /*NERDTree-O*
NERDTree-P NERD_tree.txt /*NERDTree-P*
NERDTree-R NERD_tree.txt /*NERDTree-R*
NERDTree-T NERD_tree.txt /*NERDTree-T*
NERDTree-U NERD_tree.txt /*NERDTree-U*
NERDTree-X NERD_tree.txt /*NERDTree-X*
NERDTree-cd NERD_tree.txt /*NERDTree-cd*
NERDTree-contents NERD_tree.txt /*NERDTree-contents*
NERDTree-e NERD_tree.txt /*NERDTree-e*
NERDTree-f NERD_tree.txt /*NERDTree-f*
NERDTree-gi NERD_tree.txt /*NERDTree-gi*
NERDTree-go NERD_tree.txt /*NERDTree-go*
NERDTree-gs NERD_tree.txt /*NERDTree-gs*
NERDTree-i NERD_tree.txt /*NERDTree-i*
NERDTree-m NERD_tree.txt /*NERDTree-m*
NERDTree-o NERD_tree.txt /*NERDTree-o*
NERDTree-p NERD_tree.txt /*NERDTree-p*
NERDTree-q NERD_tree.txt /*NERDTree-q*
NERDTree-r NERD_tree.txt /*NERDTree-r*
NERDTree-s NERD_tree.txt /*NERDTree-s*
NERDTree-t NERD_tree.txt /*NERDTree-t*
NERDTree-u NERD_tree.txt /*NERDTree-u*
NERDTree-x NERD_tree.txt /*NERDTree-x*
NERDTreeAPI NERD_tree.txt /*NERDTreeAPI*
NERDTreeAbout NERD_tree.txt /*NERDTreeAbout*
NERDTreeAddKeyMap() NERD_tree.txt /*NERDTreeAddKeyMap()*
NERDTreeAddMenuItem() NERD_tree.txt /*NERDTreeAddMenuItem()*
NERDTreeAddMenuSeparator() NERD_tree.txt /*NERDTreeAddMenuSeparator()*
NERDTreeAddSubmenu() NERD_tree.txt /*NERDTreeAddSubmenu()*
NERDTreeBookmarkCommands NERD_tree.txt /*NERDTreeBookmarkCommands*
NERDTreeBookmarkTable NERD_tree.txt /*NERDTreeBookmarkTable*
NERDTreeBookmarks NERD_tree.txt /*NERDTreeBookmarks*
NERDTreeChangelog NERD_tree.txt /*NERDTreeChangelog*
NERDTreeCredits NERD_tree.txt /*NERDTreeCredits*
NERDTreeFunctionality NERD_tree.txt /*NERDTreeFunctionality*
NERDTreeGlobalCommands NERD_tree.txt /*NERDTreeGlobalCommands*
NERDTreeInvalidBookmarks NERD_tree.txt /*NERDTreeInvalidBookmarks*
NERDTreeKeymapAPI NERD_tree.txt /*NERDTreeKeymapAPI*
NERDTreeLicense NERD_tree.txt /*NERDTreeLicense*
NERDTreeMappings NERD_tree.txt /*NERDTreeMappings*
NERDTreeMenu NERD_tree.txt /*NERDTreeMenu*
NERDTreeMenuAPI NERD_tree.txt /*NERDTreeMenuAPI*
NERDTreeOptionDetails NERD_tree.txt /*NERDTreeOptionDetails*
NERDTreeOptionSummary NERD_tree.txt /*NERDTreeOptionSummary*
NERDTreeOptions NERD_tree.txt /*NERDTreeOptions*
NERDTreeRender() NERD_tree.txt /*NERDTreeRender()*
NERD_commenter.txt NERD_commenter.txt /*NERD_commenter.txt*
NERD_tree.txt NERD_tree.txt /*NERD_tree.txt*
OpenFilemanager open_terminal.txt /*OpenFilemanager*
OpenTerminal open_terminal.txt /*OpenTerminal*
TSearch trac.txt /*TSearch*
TTAddAttachment trac.txt /*TTAddAttachment*
TTCreateDefect trac.txt /*TTCreateDefect*
TTCreateEnhancement trac.txt /*TTCreateEnhancement*
TTCreateTask trac.txt /*TTCreateTask*
TTLoadTicketSession trac.txt /*TTLoadTicketSession*
TTSaveTicketSession trac.txt /*TTSaveTicketSession*
Tlist_Get_Tag_Prototype_By_Line() taglist.txt /*Tlist_Get_Tag_Prototype_By_Line()*
Tlist_Get_Tagname_By_Line() taglist.txt /*Tlist_Get_Tagname_By_Line()*
Tlist_Set_App() taglist.txt /*Tlist_Set_App()*
Tlist_Update_File_Tags() taglist.txt /*Tlist_Update_File_Tags()*
VCSCommandCVSDiffOpt vcscommand.txt /*VCSCommandCVSDiffOpt*
VCSCommandCVSExec vcscommand.txt /*VCSCommandCVSExec*
VCSCommandCommitOnWrite vcscommand.txt /*VCSCommandCommitOnWrite*
VCSCommandDeleteOnHide vcscommand.txt /*VCSCommandDeleteOnHide*
VCSCommandDiffSplit vcscommand.txt /*VCSCommandDiffSplit*
VCSCommandDisableAll vcscommand.txt /*VCSCommandDisableAll*
VCSCommandDisableExtensionMappings vcscommand.txt /*VCSCommandDisableExtensionMappings*
VCSCommandDisableMappings vcscommand.txt /*VCSCommandDisableMappings*
VCSCommandDisableMenu vcscommand.txt /*VCSCommandDisableMenu*
VCSCommandEdit vcscommand.txt /*VCSCommandEdit*
VCSCommandEnableBufferSetup vcscommand.txt /*VCSCommandEnableBufferSetup*
VCSCommandMapPrefix vcscommand.txt /*VCSCommandMapPrefix*
VCSCommandMappings vcscommand.txt /*VCSCommandMappings*
VCSCommandMenuPriority vcscommand.txt /*VCSCommandMenuPriority*
VCSCommandMenuRoot vcscommand.txt /*VCSCommandMenuRoot*
VCSCommandResultBufferNameExtension vcscommand.txt /*VCSCommandResultBufferNameExtension*
VCSCommandResultBufferNameFunction vcscommand.txt /*VCSCommandResultBufferNameFunction*
VCSCommandSVKExec vcscommand.txt /*VCSCommandSVKExec*
VCSCommandSVNDiffExt vcscommand.txt /*VCSCommandSVNDiffExt*
VCSCommandSVNDiffOpt vcscommand.txt /*VCSCommandSVNDiffOpt*
VCSCommandSVNExec vcscommand.txt /*VCSCommandSVNExec*
VCSCommandSplit vcscommand.txt /*VCSCommandSplit*
VCSCommandVCSTypeOverride vcscommand.txt /*VCSCommandVCSTypeOverride*
VCSCommandVCSTypePreference vcscommand.txt /*VCSCommandVCSTypePreference*
akmap-commenter akmap.txt /*akmap-commenter*
akmap-dev akmap.txt /*akmap-dev*
akmap-intro akmap.txt /*akmap-intro*
akmap-misc akmap.txt /*akmap-misc*
akmap-os akmap.txt /*akmap-os*
akmap-text akmap.txt /*akmap-text*
akmap-toggles akmap.txt /*akmap-toggles*
akmap-ver akmap.txt /*akmap-ver*
akmap.txt akmap.txt /*akmap.txt*
align Align.txt /*align*
align-align Align.txt /*align-align*
align-codepoint Align.txt /*align-codepoint*
align-command Align.txt /*align-command*
align-commands Align.txt /*align-commands*
align-concept Align.txt /*align-concept*
align-concepts Align.txt /*align-concepts*
align-contents Align.txt /*align-contents*
align-control Align.txt /*align-control*
align-history Align.txt /*align-history*
align-manual Align.txt /*align-manual*
align-maps Align.txt /*align-maps*
align-multibyte Align.txt /*align-multibyte*
align-option Align.txt /*align-option*
align-options Align.txt /*align-options*
align-strlen Align.txt /*align-strlen*
align-usage Align.txt /*align-usage*
align-userguide Align.txt /*align-userguide*
align-utf Align.txt /*align-utf*
align-utf8 Align.txt /*align-utf8*
align-xstrlen Align.txt /*align-xstrlen*
align.txt Align.txt /*align.txt*
alignctrl Align.txt /*alignctrl*
alignctrl- Align.txt /*alignctrl-*
alignctrl-+ Align.txt /*alignctrl-+*
alignctrl-- Align.txt /*alignctrl--*
alignctrl-: Align.txt /*alignctrl-:*
alignctrl-< Align.txt /*alignctrl-<*
alignctrl-= Align.txt /*alignctrl-=*
alignctrl-> Align.txt /*alignctrl->*
alignctrl-C Align.txt /*alignctrl-C*
alignctrl-I Align.txt /*alignctrl-I*
alignctrl-P Align.txt /*alignctrl-P*
alignctrl-W Align.txt /*alignctrl-W*
alignctrl-alignskip Align.txt /*alignctrl-alignskip*
alignctrl-c Align.txt /*alignctrl-c*
alignctrl-g Align.txt /*alignctrl-g*
alignctrl-init Align.txt /*alignctrl-init*
alignctrl-initialization Align.txt /*alignctrl-initialization*
alignctrl-l Align.txt /*alignctrl-l*
alignctrl-m Align.txt /*alignctrl-m*
alignctrl-no-option Align.txt /*alignctrl-no-option*
alignctrl-p Align.txt /*alignctrl-p*
alignctrl-r Align.txt /*alignctrl-r*
alignctrl-separators Align.txt /*alignctrl-separators*
alignctrl-settings Align.txt /*alignctrl-settings*
alignctrl-star Align.txt /*alignctrl-star*
alignctrl-v Align.txt /*alignctrl-v*
alignctrl-w Align.txt /*alignctrl-w*
alignman Align.txt /*alignman*
alignmanual Align.txt /*alignmanual*
alignmap-Htd Align.txt /*alignmap-Htd*
alignmap-T= Align.txt /*alignmap-T=*
alignmap-Tsp Align.txt /*alignmap-Tsp*
alignmap-a( Align.txt /*alignmap-a(*
alignmap-a, Align.txt /*alignmap-a,*
alignmap-a< Align.txt /*alignmap-a<*
alignmap-a= Align.txt /*alignmap-a=*
alignmap-a? Align.txt /*alignmap-a?*
alignmap-abox Align.txt /*alignmap-abox*
alignmap-acom Align.txt /*alignmap-acom*
alignmap-adcom Align.txt /*alignmap-adcom*
alignmap-adec Align.txt /*alignmap-adec*
alignmap-adef Align.txt /*alignmap-adef*
alignmap-afnc Align.txt /*alignmap-afnc*
alignmap-anum Align.txt /*alignmap-anum*
alignmap-aocom Align.txt /*alignmap-aocom*
alignmap-ascom Align.txt /*alignmap-ascom*
alignmap-history Align.txt /*alignmap-history*
alignmap-m= Align.txt /*alignmap-m=*
alignmap-t# Align.txt /*alignmap-t#*
alignmap-t, Align.txt /*alignmap-t,*
alignmap-t: Align.txt /*alignmap-t:*
alignmap-t; Align.txt /*alignmap-t;*
alignmap-t< Align.txt /*alignmap-t<*
alignmap-t= Align.txt /*alignmap-t=*
alignmap-t? Align.txt /*alignmap-t?*
alignmap-tab Align.txt /*alignmap-tab*
alignmap-tml Align.txt /*alignmap-tml*
alignmap-ts, Align.txt /*alignmap-ts,*
alignmap-ts: Align.txt /*alignmap-ts:*
alignmap-ts< Align.txt /*alignmap-ts<*
alignmap-ts= Align.txt /*alignmap-ts=*
alignmap-tsp Align.txt /*alignmap-tsp*
alignmap-tsq Align.txt /*alignmap-tsq*
alignmap-tt Align.txt /*alignmap-tt*
alignmap-t~ Align.txt /*alignmap-t~*
alignmaps Align.txt /*alignmaps*
alignusage Align.txt /*alignusage*
b:VCSCommandCommand vcscommand.txt /*b:VCSCommandCommand*
b:VCSCommandOriginalBuffer vcscommand.txt /*b:VCSCommandOriginalBuffer*
b:VCSCommandSourceFile vcscommand.txt /*b:VCSCommandSourceFile*
b:VCSCommandVCSType vcscommand.txt /*b:VCSCommandVCSType*
bufexplorer bufexplorer.txt /*bufexplorer*
bufexplorer-changelog bufexplorer.txt /*bufexplorer-changelog*
bufexplorer-credits bufexplorer.txt /*bufexplorer-credits*
bufexplorer-customization bufexplorer.txt /*bufexplorer-customization*
bufexplorer-installation bufexplorer.txt /*bufexplorer-installation*
bufexplorer-todo bufexplorer.txt /*bufexplorer-todo*
bufexplorer-usage bufexplorer.txt /*bufexplorer-usage*
bufexplorer.txt bufexplorer.txt /*bufexplorer.txt*
buffer-explorer bufexplorer.txt /*buffer-explorer*
cecutil cecutil.txt /*cecutil*
cecutil-cmd cecutil.txt /*cecutil-cmd*
cecutil-contents cecutil.txt /*cecutil-contents*
cecutil-copyright cecutil.txt /*cecutil-copyright*
cecutil-destroymark cecutil.txt /*cecutil-destroymark*
cecutil-history cecutil.txt /*cecutil-history*
cecutil-map cecutil.txt /*cecutil-map*
cecutil-maps cecutil.txt /*cecutil-maps*
cecutil-marks cecutil.txt /*cecutil-marks*
cecutil-position cecutil.txt /*cecutil-position*
cecutil-posn cecutil.txt /*cecutil-posn*
cecutil-restoremark cecutil.txt /*cecutil-restoremark*
cecutil-restorewinposn cecutil.txt /*cecutil-restorewinposn*
cecutil-rwp cecutil.txt /*cecutil-rwp*
cecutil-savemark cecutil.txt /*cecutil-savemark*
cecutil-saveusermaps cecutil.txt /*cecutil-saveusermaps*
cecutil-savewinposn cecutil.txt /*cecutil-savewinposn*
cecutil-swp cecutil.txt /*cecutil-swp*
cecutil.txt cecutil.txt /*cecutil.txt*
conque-config-general conque_term.txt /*conque-config-general*
conque-config-keyboard conque_term.txt /*conque-config-keyboard*
conque-config-unix conque_term.txt /*conque-config-unix*
conque-config-windows conque_term.txt /*conque-config-windows*
conque-term-api conque_term.txt /*conque-term-api*
conque-term-bugs conque_term.txt /*conque-term-bugs*
conque-term-close conque_term.txt /*conque-term-close*
conque-term-contribute conque_term.txt /*conque-term-contribute*
conque-term-esc conque_term.txt /*conque-term-esc*
conque-term-events conque_term.txt /*conque-term-events*
conque-term-feedback conque_term.txt /*conque-term-feedback*
conque-term-gen-usage conque_term.txt /*conque-term-gen-usage*
conque-term-get-instance conque_term.txt /*conque-term-get-instance*
conque-term-input-mode conque_term.txt /*conque-term-input-mode*
conque-term-installation conque_term.txt /*conque-term-installation*
conque-term-misc conque_term.txt /*conque-term-misc*
conque-term-open conque_term.txt /*conque-term-open*
conque-term-options conque_term.txt /*conque-term-options*
conque-term-read conque_term.txt /*conque-term-read*
conque-term-register conque_term.txt /*conque-term-register*
conque-term-requirements conque_term.txt /*conque-term-requirements*
conque-term-send conque_term.txt /*conque-term-send*
conque-term-set-callback conque_term.txt /*conque-term-set-callback*
conque-term-setup conque_term.txt /*conque-term-setup*
conque-term-special-keys conque_term.txt /*conque-term-special-keys*
conque-term-subprocess conque_term.txt /*conque-term-subprocess*
conque-term-usage conque_term.txt /*conque-term-usage*
conque-term-windows conque_term.txt /*conque-term-windows*
conque-term-write conque_term.txt /*conque-term-write*
conque-term-writeln conque_term.txt /*conque-term-writeln*
cvscommand-changes vcscommand.txt /*cvscommand-changes*
g:AlignSkip Align.txt /*g:AlignSkip*
g:alignmaps_euronumber Align.txt /*g:alignmaps_euronumber*
g:alignmaps_usanumber Align.txt /*g:alignmaps_usanumber*
g:bufExplorerDefaultHelp bufexplorer.txt /*g:bufExplorerDefaultHelp*
g:bufExplorerDetailedHelp bufexplorer.txt /*g:bufExplorerDetailedHelp*
g:bufExplorerFindActive bufexplorer.txt /*g:bufExplorerFindActive*
g:bufExplorerReverseSort bufexplorer.txt /*g:bufExplorerReverseSort*
g:bufExplorerShowDirectories bufexplorer.txt /*g:bufExplorerShowDirectories*
g:bufExplorerShowRelativePath bufexplorer.txt /*g:bufExplorerShowRelativePath*
g:bufExplorerShowUnlisted bufexplorer.txt /*g:bufExplorerShowUnlisted*
g:bufExplorerSortBy bufexplorer.txt /*g:bufExplorerSortBy*
g:bufExplorerSplitBelow bufexplorer.txt /*g:bufExplorerSplitBelow*
g:bufExplorerSplitOutPathName bufexplorer.txt /*g:bufExplorerSplitOutPathName*
g:bufExplorerSplitRight bufexplorer.txt /*g:bufExplorerSplitRight*
getlatestvimscripts-install pi_getscript.txt /*getlatestvimscripts-install*
getscript pi_getscript.txt /*getscript*
getscript-autoinstall pi_getscript.txt /*getscript-autoinstall*
getscript-data pi_getscript.txt /*getscript-data*
getscript-history pi_getscript.txt /*getscript-history*
getscript-plugins pi_getscript.txt /*getscript-plugins*
getscript-start pi_getscript.txt /*getscript-start*
glvs pi_getscript.txt /*glvs*
glvs-alg pi_getscript.txt /*glvs-alg*
glvs-algorithm pi_getscript.txt /*glvs-algorithm*
glvs-autoinstall pi_getscript.txt /*glvs-autoinstall*
glvs-contents pi_getscript.txt /*glvs-contents*
glvs-copyright pi_getscript.txt /*glvs-copyright*
glvs-data pi_getscript.txt /*glvs-data*
glvs-dist-install pi_getscript.txt /*glvs-dist-install*
glvs-hist pi_getscript.txt /*glvs-hist*
glvs-install pi_getscript.txt /*glvs-install*
glvs-options pi_getscript.txt /*glvs-options*
glvs-plugins pi_getscript.txt /*glvs-plugins*
glvs-usage pi_getscript.txt /*glvs-usage*
open-terminal open_terminal.txt /*open-terminal*
open-terminal-about open_terminal.txt /*open-terminal-about*
open-terminal-changelog open_terminal.txt /*open-terminal-changelog*
open-terminal-commands open_terminal.txt /*open-terminal-commands*
open-terminal-introduction open_terminal.txt /*open-terminal-introduction*
open-terminal-keymap open_terminal.txt /*open-terminal-keymap*
open-terminal-requires open_terminal.txt /*open-terminal-requires*
pi_getscript.txt pi_getscript.txt /*pi_getscript.txt*
taglist-commands taglist.txt /*taglist-commands*
taglist-debug taglist.txt /*taglist-debug*
taglist-extend taglist.txt /*taglist-extend*
taglist-faq taglist.txt /*taglist-faq*
taglist-functions taglist.txt /*taglist-functions*
taglist-install taglist.txt /*taglist-install*
taglist-internet taglist.txt /*taglist-internet*
taglist-intro taglist.txt /*taglist-intro*
taglist-keys taglist.txt /*taglist-keys*
taglist-license taglist.txt /*taglist-license*
taglist-menu taglist.txt /*taglist-menu*
taglist-options taglist.txt /*taglist-options*
taglist-requirements taglist.txt /*taglist-requirements*
taglist-session taglist.txt /*taglist-session*
taglist-todo taglist.txt /*taglist-todo*
taglist-using taglist.txt /*taglist-using*
taglist.txt taglist.txt /*taglist.txt*
textformat-commands textformat.txt /*textformat-commands*
textformat-config textformat.txt /*textformat-config*
textformat-history textformat.txt /*textformat-history*
textformat-keymap textformat.txt /*textformat-keymap*
textformat-start textformat.txt /*textformat-start*
textformat.txt textformat.txt /*textformat.txt*
trac-changeset-view trac.txt /*trac-changeset-view*
trac-format trac.txt /*trac-format*
trac-format-blockquotes trac.txt /*trac-format-blockquotes*
trac-format-definition trac.txt /*trac-format-definition*
trac-format-discussion trac.txt /*trac-format-discussion*
trac-format-font trac.txt /*trac-format-font*
trac-format-headings trac.txt /*trac-format-headings*
trac-format-images trac.txt /*trac-format-images*
trac-format-links trac.txt /*trac-format-links*
trac-format-lists trac.txt /*trac-format-lists*
trac-format-macros trac.txt /*trac-format-macros*
trac-format-misc trac.txt /*trac-format-misc*
trac-format-nolink trac.txt /*trac-format-nolink*
trac-format-notes trac.txt /*trac-format-notes*
trac-format-paragraphs trac.txt /*trac-format-paragraphs*
trac-format-preformatted trac.txt /*trac-format-preformatted*
trac-format-processors trac.txt /*trac-format-processors*
trac-format-tables trac.txt /*trac-format-tables*
trac-format-traclinks trac.txt /*trac-format-traclinks*
trac-requirements trac.txt /*trac-requirements*
trac-search-view trac.txt /*trac-search-view*
trac-server trac.txt /*trac-server*
trac-setup trac.txt /*trac-setup*
trac-ticket-attachments trac.txt /*trac-ticket-attachments*
trac-ticket-changes trac.txt /*trac-ticket-changes*
trac-ticket-comments trac.txt /*trac-ticket-comments*
trac-ticket-create trac.txt /*trac-ticket-create*
trac-ticket-filters trac.txt /*trac-ticket-filters*
trac-ticket-session trac.txt /*trac-ticket-session*
trac-ticket-sorting trac.txt /*trac-ticket-sorting*
trac-ticket-view trac.txt /*trac-ticket-view*
trac-timeline-view trac.txt /*trac-timeline-view*
trac-wiki-attachments trac.txt /*trac-wiki-attachments*
trac-wiki-diff trac.txt /*trac-wiki-diff*
trac-wiki-editing trac.txt /*trac-wiki-editing*
trac-wiki-htmlpreview trac.txt /*trac-wiki-htmlpreview*
trac-wiki-save trac.txt /*trac-wiki-save*
trac-wiki-view trac.txt /*trac-wiki-view*
trac.txt trac.txt /*trac.txt*
vcscommand vcscommand.txt /*vcscommand*
vcscommand-buffer-management vcscommand.txt /*vcscommand-buffer-management*
vcscommand-buffer-variables vcscommand.txt /*vcscommand-buffer-variables*
vcscommand-bugs vcscommand.txt /*vcscommand-bugs*
vcscommand-commands vcscommand.txt /*vcscommand-commands*
vcscommand-config vcscommand.txt /*vcscommand-config*
vcscommand-contents vcscommand.txt /*vcscommand-contents*
vcscommand-customize vcscommand.txt /*vcscommand-customize*
vcscommand-events vcscommand.txt /*vcscommand-events*
vcscommand-install vcscommand.txt /*vcscommand-install*
vcscommand-intro vcscommand.txt /*vcscommand-intro*
vcscommand-manual vcscommand.txt /*vcscommand-manual*
vcscommand-mappings vcscommand.txt /*vcscommand-mappings*
vcscommand-mappings-override vcscommand.txt /*vcscommand-mappings-override*
vcscommand-naming vcscommand.txt /*vcscommand-naming*
vcscommand-options vcscommand.txt /*vcscommand-options*
vcscommand-ssh vcscommand.txt /*vcscommand-ssh*
vcscommand-ssh-config vcscommand.txt /*vcscommand-ssh-config*
vcscommand-ssh-env vcscommand.txt /*vcscommand-ssh-env*
vcscommand-ssh-other vcscommand.txt /*vcscommand-ssh-other*
vcscommand-ssh-wrapper vcscommand.txt /*vcscommand-ssh-wrapper*
vcscommand-statusline vcscommand.txt /*vcscommand-statusline*
vcscommand.txt vcscommand.txt /*vcscommand.txt*

301
doc/textformat.txt Normal file
View File

@ -0,0 +1,301 @@
*textformat.txt* Vim Text Formatter (version 2.1) 2008-09-13
Description This plugin provides commands and key mappings to quickly
align and format text. Text can be easily reformatted and
aligned to either left or right margin or justified to both
margins or centered. The text formatting commands provided by
this plugin are a bit more automatic and more intelligent than
those integrated to Vim. Together they make more powerful
command set for formatting text.
Author Teemu Likonen <tlikonen@iki.fi>
Contents
1. Quick start |textformat-start|
2. Commands |textformat-commands|
3. Default key mappings |textformat-keymap|
4. Configuration |textformat-config|
5. Version history |textformat-history|
==============================================================================
1. Quick start *textformat-start*
The impatient are always with us so below is a short info on (probably) the
most important tools provided by this plugin. See the following sections of
this manual for more detailed instructions.
<Leader>al Left-align and reformat
<Leader>ar Right-align
<Leader>aj Left-right justify and reformat
<Leader>ac Center lines
In normal mode the commands operate on current paragraph; in visual mode they
operate on the selected lines. By default, <Leader> is the backslash key, so
the mappings are actually \al, \ar, \aj and \ac, by default. If you have
changed the g:mapleader variable in your .vimrc file <Leader> may be something
else.
==============================================================================
2. Commands *textformat-commands*
Let's start with the basic components of this plugin. These are the ex
commands. You probably don't need these very often but they can be handy if
you want to have text formatting and aligning as a part of a macro or function
or something. The "daily tools" are explained later.
:[range]AlignLeft [indent] *:AlignLeft*
Align to left all the lines in [range] (default is
current line) and truncate all extra whitespace
characters. That is, if there are more than one space
between words they are reduced to just one. If
'joinspaces' is set then two spaces are added after
every sentence ending with character ".", "?" or "!".
If optional numeric argument [indent] is given then
that is used as the left margin. If [indent] is not
given the indent of the first line in the [range] (and
the first line of each paragraph within the [range])
is used to define indent for the rest of the lines in
the paragraph. There is one exception: if
'formatoptions' contains "2" then the second line
defines the indent for the rest of the lines in the
paragraph.
Note: This is very similar to |:left| command except
that this also truncates whitespaces and that without
[indent] each paragraph's indent is detected and used.
Note: There is a possible unexpected behaviour: If
command is run without [range] (i.e., it's just the
current line) and [indent] is not given then this
command just "aligns" to the current indent position
and truncates whitespaces. You might see nothing
happening if there weren't any extra whitespaces. Use
[indent] (or |:left| command) to align to desired
column.
:[range]AlignRight [width] *:AlignRight*
Align to right all the lines in [range] (default is
current line) and truncate all extra whitespace
characters (honor 'joinspaces', as in :AlignLeft).
[width] is used as the right margin. If [width] is not
given the value of 'textwidth' option is used instead.
If 'textwidth' is zero then the value of 80 is used.
Note: This is very similar to |:right| command except
that this also truncates whitespaces.
:[range]AlignJustify [width] *:AlignJustify*
Left-right justify lines in [range] (default is
current line). This means adjusting spaces between
words so that the lines fit. If 'joinspaces' is set
then at least two spaces are printed after every
sentence ending with a ".", "?" or "!". The first line
in [range] (and the first line in each paragraph
within the [range]) defines the indent for the rest of
the lines in the paragraph, except if 'formatoptions'
contains "2" then it's the second line.
Numeric argument [width] is used as the right margin.
If [width] is not given the value of 'textwidth' is
used instead. If 'textwidth' is zero then the value of
80 is used.
Also see the Discussion below.
:[range]AlignCenter [width] *:AlignCenter*
Center lines in [range] (default is current line)
between the first column and [width]. All extra
whitespace characters are truncated (but honor
'joinspaces', just like in :AlignLeft). If [width] is
not given the value of 'textwidth' option is used
instead. If 'textwidth' is zero the value of 80 is
used.
Note: This is very similar to |:center| except that
this also truncates whitespaces.
Discussion ~
All the previous ex commands are rather "stupid" and operate on single lines
only. They do not wrap lines nor do other kind of formatting. If [width] (or
'textwidth') is too narrow for the line then some characters will go beyond
the right margin. This is similar to Vim's own |:left|, |:right| and |:center|
commands. More sophisticated formatting tools are provided as key mappings
(see below).
Usually when paragraphs are justified the last line of each paragraph is
aligned to left. However, :AlignJustify command does not do this. The purpose
of this command is to do exactly what was asked for: left-right justify
a range of lines. More sophisticated justify tools is <Leader>aj which
reformats the paragraph (like |gw|), justifies lines and aligns each
paragraph's last line to left.
All the commands truncate extra whitespaces which makes them work well
together. This is particularly because the left-right justify needs to add
extra spaces to make lines fill the text area. If you later want to reformat
such previously justified paragraph and align it to left, for example, it's
convenient that the tool automatically handles this and removes extra spaces.
If you want to align text without truncating whitespaces use Vim's own align
commands: |:left|, |:right| and |:center|.
==============================================================================
3. Default key mappings *textformat-keymap*
By default this plugin provides a couple of key mappings for convenient text
formatting. If the mappings have already been defined by user (or are taken by
other plugins) then some of the following mappings may not be automatically
available. See the next section of this manual for information on how to
change the default mappings.
There are key mappings available for normal mode and visual mode. As usual,
<Leader> is the backslash key by default but it can be changed with
g:mapleader variable. Consult the Vim manual for more information on <Leader>.
Normal mode (current paragraph) ~
<Leader>al Left-align the current "inner paragraph" (see |ip|)
and reformat it according to 'textwidth'.
<Leader>ar Right-align the current "inner paragraph" (see |ip|)
to margin at 'textwidth'. This does not reformat the
paragraph because with right-aligned text user usually
wants to decide exactly what goes to what line.
<Leader>aj Left-right justify the current "inner paragraph" (see
|ip|). Technically each line's whitespaces are first
truncated, then the text is reformatted according to
'textwidth' and finally lines are justified. The last
line (of each text paragraph) is aligned to left.
<Leader>ac Center lines of current "inner paragraph" (see |ip|)
between the first column and 'textwidth'. This does
not reformat the paragraph because with centered text
user usually wants to decide exactly what goes to what
line.
Visual mode (range of lines) ~
{Visual}<Leader>al Left-align and reformat {Visual} lines so that they
fill 'textwidth'.
{Visual}<Leader>ar Right-align {Visual} lines.
{Visual}<Leader>aj Left-right justify {Visual} lines. First truncate all
extra whitespace characters, then reformat lines so
that they fill 'textwidth' and finally left-right
justify. The last line of each paragraph as well as
the last line in {Visual} range is aligned to left.
{Visual}<Leader>ac Center {Visual} lines.
Both normal mode and visual mode commands truncate extra whitespace
characters. If 'joinspaces' is set then an extra space is added after every
sentence ending with a ".", "?" or "!". The first line in each paragraph
inside the range defines the indent for the rest of the lines in the
paragraph, except if 'formatoptions' contains "2" then it's the second line.
Paragraph definitions ~
The normal mode commands operate on the concept of "inner paragraph" (see
|ip|). The effect is almost the same as selecting current paragraph with Vim's
"vip" command and then executing the equivalent visual mode command. Such
inner paragraph may contain several text paragraphs if 'formatoptions'
contains "w". Each of them is reformatted separately with <Leader>al and
<Leader>aj commands.
New paragraph always begins after a blank line. If 'formatoptions' contains
"w" then new paragraph also begins after a line which ends with
a non-whitespace character. That is, with "w" in 'formatoptions' every line
which ends with a non-whitespace also ends a paragraph. In left-right justify
(<Leader>aj) such line is aligned to left. You need to ensure that there is
a trailing whitespace in every consecutive line which belongs to same
paragraph (the whitespace is preserved after formatting). If 'formatoptions'
does not contain "w" then all consecutive non-blank lines belong to same
paragraph.
==============================================================================
4. Configuration *textformat-config*
The key mappings can be configured freely by user. This plugin uses the
default ones only if they are free and not used for other purposes. Here's an
example of lines you could put to your .vimrc file:
>
nmap <F5> <Plug>Quick_Align_Paragraph_Left
nmap <F6> <Plug>Quick_Align_Paragraph_Right
nmap <F7> <Plug>Quick_Align_Paragraph_Justify
nmap <F8> <Plug>Quick_Align_Paragraph_Center
vmap <F5> <Plug>Align_Range_Left
vmap <F6> <Plug>Align_Range_Right
vmap <F7> <Plug>Align_Range_Justify
vmap <F8> <Plug>Align_Range_Center
That is, |:nmap| command defines mappings for normal mode and |:vmap| for
visual mode. Function keys from <F5> to <F8> are used in this example. The
rest of the line is a code word for Vim and this plugin. They must be written
exactly as shown in the example. I think the code words are pretty much
self-descriptive.
Don't use |:nnoremap| and |:vnoremap| commands here; they don't work because
the right-hand side (<Plug>...) must be remappable. See Vim's manual for more
information about the key map commands.
Most part of this plugin is loaded into memory when the text-formatting
commands or key maps are used for the first time. Only the very minimum is
automatically loaded when Vim is started. If you want to completely avoid
loading this plugin put the following line to your .vimrc file:
>
let g:loaded_textformat = 1
Happy formatting!
==============================================================================
5. Version history *textformat-history*
v2.1 2008-09-13
- Minor internal cleanup.
v2.0 2008-08-10
- \al and \aj now reformat text also in visual mode.
- \al and \aj honor "w" in 'formatoptions' and detect paragraph
boundaries accordingly.
- :AlignLeft, :AlignJustify, \al and \aj recognize several
paragraphs within the range and detect indent for each
paragraph separately.
- Add logic to load the plugin script only once.
v1.1 2008-08-04
- Keep cursor position more accurately when formatting
a paragraph with \al and \aj.
- When 'joinspaces' is set insert two spaces after .?!
punctuation with left-right justify. This is now similar to
other commands.
v1.0 2008-08-03
- All the commands now follow user's 'expandtab' setting and
print leading whitespaces accordingly. Now this works just
like :left, :right and :center commands.
- The left-aligned last line in justified paragraph did not
honor 'joinspaces'. Fixed.
v0.9 2008-08-01
- Initial upload to http://www.vim.org .
==============================================================================
vim: ft=help tw=78 ts=8 et norl fo+=2aw

627
doc/trac.txt Normal file
View File

@ -0,0 +1,627 @@
*trac.txt*
Vimtrac Usage Notes
1. System Requirements |trac-requirements|
2. Setup |trac-setup|
3. Server Selection |trac-server|
4. Wiki Viewing / Editing |trac-wiki-view|
4.1 Wiki Browsing/Editing |trac-wiki-editing|
4.2. Adding/ Retrieving an Attachment |trac-wiki-attachments|
4.3. HTML Preview |trac-wiki-htmlpreview|
4.4. Saving Wiki's |trac-wiki-save|
4.5 Wiki Vim Diffs |trac-wiki-diff|
5. Trac Ticket View |trac-ticket-view|
5.1 Ticket Filters |trac-ticket-filters|
5.1.1 Ticket Sorting |trac-ticket-sorting|
5.2. Adding Comments |trac-ticket-comments|
5.3. Changing ticket states |trac-ticket-changes|
5.4. Creating Tickets |trac-ticket-create|
5.5. Adding/Retrieving attachments |trac-ticket-attachments|
5.6 Ticket Sessions |trac-ticket-session|
6. Trac Search View |trac-search-view|
7. Changeset View |trac-changeset-view|
8. Timeline View |trac-timeline-view|
9. WikiFormatting |trac-wiki-formatting|
9.1 Font Styles |trac-format-font|
9.1 Notes: |trac-format-notes|
9.2 Headings |trac-format-headings|
9.3 Paragraphs |trac-format-paragraphs|
9.4 Lists |trac-format-lists|
9.4 Definition Lists |trac-format-definition|
9.5 Preformatted Text |trac-format-preformatted|
9.6 Blockquotes |trac-format-blockquotes|
9.7 Discussion Citations |trac-format-discussion|
9.8 Tables |trac-format-tables|
9.9 Links |trac-format-links|
9.9.1 Trac Links |trac-format-traclinks|
9.10 Escaping Links and WikiPageNames |trac-format-nolink|
9.11 Images |trac-format-images|
9.12 Macros |trac-format-macros|
9.13 Processors |trac-format-processors|
9.14 Miscellaneous |trac-format-misc|
================================================================================
1. System Requirements *trac-requirements*
You must have a working Trac repository version 0.10 or later complete with
the xmlrpc plugin and a user with suitable access rights.
Vim must be compiled with python support and your client must have python
2.4.4 or later
To use the summary view you need to have the Align plugin installed for the
layout.
http://www.vim.org/scripts/script.php?script_id=294
================================================================================
2. Setup *trac-setup*
You need to create a list of trac servers using this format in your vimrc.
"let g:tracServerList = {}
"let g:tracServerList['(Server Name)'] =
\'http://(user):(password)@(trac serverpath)/login/xmlrpc'
Check out
http://www.ascetinteractive.com.au/vimtrac/wiki/UsageNotes and
http://www.ascetinteractive.com.au/vimtrac/wiki/TricksAndTips
for more up to date notes
================================================================================
3. Server Selection *trac-server*
:TWServer [ServerName] *:TWServer*
:TTServer [ServerName] *:TTServer*
:TTLServer [ServerName] *:TTLServer*
Sets the current trac server where the
The <tab> key will cycle through available servers.
The wiki (TW), ticket (TT) and timeline (TTL) vaiations will open the
respective views
================================================================================
4. Wiki Viewing / Editing *trac-wiki-view*
The Trac Wiki view is for browsing an editing a trac websites wiki pages.
*:TWOpen*
To open the wiki view use the command :TWOpen [OptionalWikiPage]
If no page argument is given the plugin will open the main page WikiStart
by default
4.1. Browsing/Editing *trac-wiki-editing*
The WIKITOC_WINDOW will show a list of pages. Scrolling up and down and
Pressing <return> on a page will open the selected page in the WIKI_WINDOW
Pressing <space> over the page in the WIKITOC_WINDOW will display the page
in a browser
Trac sites usually have a bunch of in built pages Trac* or Wiki* you can
hide these from view by setting the global variable in your vimrc. let
g:tracHideTracWiki = 'yes'
At the moment this is done with a simple regexp so if you name your own
pages Trac... or Wiki... they will not appear on the Table of Contents.
You can also load a page by pressing the usual tag jump <c-]> to open the
page under the cursor. At the moment theres no page name validation so it
will throw an error if you try an open a nonexistant page.
4.2. Adding/ Retrieving an Attachment *trac-wiki-attachments*
:TWAddAttachment [file_path] *:TWAddAttachment*
adds an attachment to the current active wiki page
:TWGetAttachment [file] *:TWGetAttachment*
gets an attachment from the active Wiki Page and save it to the current
working directory.
If a Wiki page opened contains attachments The Wiki Attachment window will
appear. Attachments can be downloaded by hovering over the desired
attachment and pressing <enter>
4.3. HTML Preview *trac-wiki-htmlpreview*
:TTPreview *:TWPreview* *:TTPreview*
displays the current wiki in html preview (only tested on lynx set
g:tracBrowser)
You can also use the shortcut <leader>tp
4.4. Saving Wiki's *trac-wiki-save*
To save a page you can type in the command view
:TWSave [optional_wiki_update_comment] *:TWSave*
Alternatively you can quickly save a page with your regular :wq<cr> or :w<cr>
which I've mapped to perform the TWSave? command.
Exiting Trac Wiki View
Exiting is done by either the command
:TClose, :wq<cr> or :q<cr> in either of the wiki windows
4.5 Wiki Vim Diffs *trac-wiki-diff*
:TWVimDiff <revision no> *:TWVimDiff*
Opens a vertical split diff The current wiki's <revision no>. If theres
no argument supplied it will be the previous revision.
================================================================================
5. Trac Ticket View *trac-ticket-view*
The Trac ticket view is you browse trac tickets
Opening
:TTOpen [optional_ticket_id] *:TTOpen*
Browsing
You can scroll up and down the ticket list. Pressing enter will load the
ticket id under the cursor.
5.1 Ticket Filters *trac-ticket-filters*
:TTFilterMilestone [Milestone] *:TTFilterMilestone*
:TTFilterType [Type] *:TTFilterType*
:TTFilterStatus [Status] *:TTFilterStatus*
:TTFilterResolution [Resolution *:TTFilterResolution*
:TTFilterPriority [Priority] *:TTFilterPriority*
:TTFilterSeverity [Severity] *:TTFilterSeverity*
:TTFilterComponent [Component] *:TTFilterComponent*
:TTFilterOwner [Owner] *:TTFilterOwner*
For filtering on respective ticket attributes. Allows a tab complete option
for Filter acts as a whitelist ignoring all other tickets not matching the
attribute
:TTIgnoreMilestone [Milestone] *:TTIgnoreMilestone*
:TTIgnoreType [Type] *:TTIgnoreType*
:TTIgnoreStatus [Status] *:TTIgnoreStatus*
:TTIgnoreResolution [Resolution *:TTIgnoreResolution*
:TTIgnorePriority [Priority] *:TTIgnorePriority*
:TTIgnoreSeverity [Severity] *:TTIgnoreSeverity*
:TTIgnoreComponent [Component] *:TTIgnoreComponent*
:TTIgnoreOwner [Owner] *:TTIgnoreOwner*
The Opposite of TTFilter... acts as a blacklist filter on tickets.
:TTIgnoreNoMilestone [NoMilestone] *:TTIgnoreNoMilestone*
:TTIgnoreNoOwner [NoOwner] *:TTIgnoreNoOwner*
:TTFilterNoMilestone [NoMilestone] *:TTFilterNoMilestone*
:TTFilterNoOwner [NoOwner] *:TTFilterNoOwner*
Special filters for tickets not owned or categorised
:TTClearAllFilters *:TTClearAllFilters*
Resets the filter list to blank
:TTClearFilter [filter no] *:TTClearFilter*
Filter numbers and descriptions are displayed at the top of the ticket
list. Using this filter will remove the filter number
:TTListFilters *:TTListFilters*
5.1.2 Ticket Sorting *trac-ticket-sorting*
:TTSortby [sort_option] *:TTSortby*
Tickets can either be sorted according to milestone or priority. Milestones
will appear in order of due date and ticket priority is arranged according
to the trac-admin priority settings.
5.2. Adding Comments *trac-ticket-comments*
The TICKET_COMMENT window is for adding comments. To commit a comment write
the message first and then type
:TTAddComment *:TTAddComment*
5.3. Changing ticket states *trac-ticket-changes*
Trac current ticket option modifications (use tab complete)
:TTSetMilestone [Milestone] *:TTSet*
:TTSetType [Type]
:TTSetStatus [Status]
:TTSetResolution [Resolution]
:TTSetPriority [Priority]
:TTSetSeverity [Severity]
:TTSetComponent [Component]
:TTSetSummary [Summary]
The setting will immediately be sent to the server.
:TTUpdateDescrption *:TTUpdateDescrption*
Takes the text from the TICKET_COMMENT_WINDOW and updates a tickets
description. It will prompt for confirmation before committing
5.4. Creating Tickets *trac-ticket-create*
This is still a bit of a hack. If you add a description in the
TICKET_COMMENT window and type the command
:TTCreateTask [ticket_summary] *TTCreateTask*
:TTCreateDefect [ticket_summary] *TTCreateDefect*
:TTCreateEnhancement [ticket_summary] *TTCreateEnhancement*
A new ticket will be created with the default attributes (set in trac.ini).
When creating a ticket you can create a description initially in the
TICKET_COMMENT_WINDOW or alternatively you can add a description later
using |TTUpdateDescrption|.
5.5. Adding/Retrieving attachments *trac-ticket-attachments*
:TTAddAttachment [file_path] *TTAddAttachment*
Adds a ticket to the current open ticket
:TTGetAttachment [file]
Retrieves an atteched file and saves it to the current working directory.
File options for the current ticket may be viewed with <tab> completion.
5.6. Ticket Sessions *trac-ticket-session*
It's possible to associate a list of open files with a trac ticket on the
local server which can be handy for reopening tickets another day to make
further changes.
Note: the plugin needs a directory to write to by default it is
let g:tracSessionDirectory = expand ('$HOME') . '/.vimtrac_session'
TTSaveTicketSession *TTSaveTicketSession*
Saves the open files and line numbers to the active ticket. You must
have a ticket open in the ticket view for this to take effect.
TTLoadTicketSession *TTLoadTicketSession*
Loads the Tickets Session information
5.7. Exiting
:TClose
or :q<cr> in either of the Ticket windows will close the view
================================================================================
6. Trac Search View *trac-search-view*
*TSearch*
:TSearch [search_term]
Opening Trac Search View
Will open search view containing matching wiki/ticket/changesets along with
basic descrriptions
:TClose will close this view or a ticket/wiki view will open if an item is
selected
================================================================================
7. Changeset View *trac-changeset-view*
:TChangesetOpen [changeset_id] *:TChangesetOpen*
opens a unified diff changeset view in a split window
You can also open a changeset by pressing <enter> on a matching
Changeset:>> line in the Trac Seatch window
================================================================================
8. Timeline View *trac-timeline-view*
Timeline view requires feedparser.py installed.
http://www.feedparser.org/
The timeline view grabs the rss feed from a trac server.
:TTimelineOpen *:TTimelineOpen*
You can also open tickets, wikis and changesets by pressing <enter> on a
matching Changeset:>>, Wiki:>> and Ticket:>> line
================================================================================
9. Trac Wiki Formatting *trac-format*
This reference is based on the trac wiki information provided with trac.
(WikiFormatting) Made easier to read within vim. I'd suggest you read the
document in your browser and use this as a quick refresher
Access this file with :TWikiFormat
Wiki markup is a core feature in Trac, tightly integrating all the other
parts of Trac into a flexible and powerful whole.
Trac has a built in small and powerful wiki rendering engine. This wiki
engine implements an ever growing subset of the commands from other popular
Wikis, especially [http://moinmoin.wikiwikiweb.de/ MoinMoin].
This page demonstrates the formatting syntax available anywhere
WikiFormatting is allowed.
9.1 Font Styles *trac-format-font*
The Trac wiki supports the following font styles:
{{{
* '''bold''', '''!''' can be bold too''', and '''! '''
* ''italic''
* '''''bold italic'''''
* __underline__
* {{{monospace}}} or `monospace`
* ~~strike-through~~
* ^superscript^
* ,,subscript,,
}}}
9.1 Notes: *trac-format-notes*
`{{{...}}}` and {{{`...`}}} commands not only select a monospace font, but
also treat their content as verbatim text, meaning that no further wiki
processing is done on this text.
{{{ ! }}} tells wiki parser to not take the following characters as wiki
format, so pay attention to put a space after !, e.g. when ending bold.
9.2 Headings *trac-format-headings*
You can create heading by starting a line with one up to five ''equal''
characters ("=") followed by a single space and the headline text. The line
should end with a space followed by the same number of ''='' characters.
The heading might optionally be followed by an explicit id. If not, an
implicit but nevertheless readable id will be generated.
Example:
{{{
= Heading =
== Subheading ==
=== About ''this'' ===
=== Explicit id === #using-explicit-id-in-heading
}}}
9.3 Paragraphs *trac-format-paragraphs*
A new text paragraph is created whenever two blocks of text are separated
by one or more empty lines.
A forced line break can also be inserted, using:
{{{
Line 1[[BR]]Line 2
}}}
9.4 Lists *trac-format-lists*
The wiki supports both ordered/numbered and unordered lists.
Example:
{{{
* Item 1
* Item 1.1
* Item 2
1. Item 1
a. Item 1.a
a. Item 1.b
i. Item 1.b.i
i. Item 1.b.ii
1. Item 2
And numbered lists can also be given an explicit number:
3. Item 3
}}}
Note that there must be one or more spaces preceding the list item markers,
otherwise the list will be treated as a normal paragraph.
9.4 Definition Lists *trac-format-definition*
The wiki also supports definition lists.
Example:
{{{
llama::
some kind of mammal, with hair
ppython::
some kind of reptile, without hair
(can you spot the typo?)
}}}
Note that you need a space in front of the defined term.
9.5 Preformatted Text *trac-format-preformatted*
Block containing preformatted text are suitable for source code snippets,
notes and examples. Use three ''curly braces'' wrapped around the text to
define a block quote. The curly braces need to be on a separate line.
Example:
{{{
{{{
def HelloWorld():
print "Hello World"
}}}
}}}
9.6 Blockquotes *trac-format-blockquotes*
In order to mark a paragraph as blockquote, indent that paragraph with two
spaces.
Example:
{{{
This text is a quote from someone else.
}}}
9.7 Discussion Citations *trac-format-discussion*
To delineate a citation in an ongoing discussion thread, such as the ticket
comment area, e-mail-like citation marks (">", ">>", etc.) may be used.
Example:
{{{
>> Someone's original text
> Someone else's reply text
My reply text
}}}
''Note: Some WikiFormatting elements, such as lists and preformatted text,
are lost in the citation area. Some reformatting may be necessary to
create a clear citation.''
9.8 Tables *trac-format-tables*
Simple tables can be created like this:
{{{
||Cell 1||Cell 2||Cell 3||
||Cell 4||Cell 5||Cell 6||
}}}
Note that more complex tables can be created using
[wiki:WikiRestructuredText#BiggerReSTExample reStructuredText].
9.9 Links *trac-format-links*
Hyperlinks are automatically created for WikiPageNames and URLs.
!WikiPageLinks can be disabled by prepending an exclamation mark "!"
character, such as {{{!WikiPageLink}}}.
Example:
{{{
TitleIndex, http://www.edgewall.com/, !NotAlink
}}}
Links can be given a more descriptive title by writing the link followed by
a space and a title and all this inside square brackets. If the
descriptive title is omitted, then the explicit prefix is discarded, unless
the link is an external link. This can be useful for wiki pages not
adhering to the WikiPageNames convention.
Example:
{{{
* [http://www.edgewall.com/ Edgewall Software]
* [wiki:TitleIndex Title Index]
* [wiki:ISO9000]
}}}
9.9.1 Trac Links *trac-format-traclinks*
Wiki pages can link directly to other parts of the Trac system. Pages can
refer to tickets, reports, changesets, milestones, source files and other
Wiki pages using the following notations:
{{{
* Tickets: #1 or ticket:1
* Reports: {1} or report:1
* Changesets: r1, [1] or changeset:1
* ...
}}}
See TracLinks for more in-depth information.
9.10 Escaping Links and WikiPageNames *trac-format-nolink*
You may avoid making hyperlinks out of TracLinks by preceding an expression
with a single "!" (exclamation mark).
Example:
{{{
!NoHyperLink
!#42 is not a link
}}}
9.11 Images *trac-format-images*
Urls ending with `.png`, `.gif` or `.jpg` are no longer automatically
interpreted as image links, and converted to `<img>` tags.
You now have to use the ![[Image]] macro (see below).
9.12 Macros *trac-format-macros*
Macros are ''custom functions'' to insert dynamic content in a page.
Example:
{{{
[[Timestamp]]
}}}
See WikiMacros for more information, and a list of installed macros.
9.13 Processors *trac-format-processors*
Trac supports alternative markup formats using WikiProcessors. For example,
processors are used to write pages in
[wiki:WikiRestructuredText reStructuredText] or [wiki:WikiHtml HTML].
Example 1:
{{{
#!html
<pre class="wiki">{{{
#!html
&lt;h1 style="text-align: right; color: blue"&gt;HTML Test&lt;/h1&gt;
}}}</pre>
}}}
Example:
{{{
#!html
<pre class="wiki">{{{
#!python
class Test:
def __init__(self):
print "Hello World"
if __name__ == '__main__':
Test()
}}}</pre>
}}}
Perl:
{{{
#!perl
my ($test) = 0;
if ($test > 0) {
print "hello";
}
}}}
See WikiProcessors for more information.
9.14 Miscellaneous *trac-format-misc*
Four or more dashes will be replaced by a horizontal line (<HR>)
Example:
{{{
----
}}}
See also: TracLinks, TracGuide, WikiHtml, WikiMacros, WikiProcessors,
TracSyntaxColoring.

843
doc/vcscommand.txt Normal file
View File

@ -0,0 +1,843 @@
*vcscommand.txt* vcscommand
Copyright (c) Bob Hiestand
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to
deal in the Software without restriction, including without limitation the
rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
sell copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
IN THE SOFTWARE.
For instructions on installing this file, type
:help add-local-help
inside Vim.
Author: Bob Hiestand <bob.hiestand@gmail.com>
Credits: Benji Fisher's excellent MatchIt documentation
==============================================================================
1. Contents *vcscommand-contents*
Installation : |vcscommand-install|
vcscommand Intro : |vcscommand|
vcscommand Manual : |vcscommand-manual|
Customization : |vcscommand-customize|
SSH "integration" : |vcscommand-ssh|
Changes from cvscommand : |cvscommand-changes|
Bugs : |vcscommand-bugs|
==============================================================================
2. vcscommand Installation *vcscommand-install*
The vcscommand plugin comprises five files: vcscommand.vim, vcssvn.vim,
vcscvs.vim, vcssvk.vim and vcscommand.txt (this file). In order to install
the plugin, place the vcscommand.vim, vcssvn.vim, vcssvk.vim, and vcscvs.vim
files into a plugin directory in your runtime path (please see
|add-global-plugin| and |'runtimepath'|.
This help file can be included in the VIM help system by copying it into a
'doc' directory in your runtime path and then executing the |:helptags|
command, specifying the full path of the 'doc' directory. Please see
|add-local-help| for more details.
vcscommand may be customized by setting variables, creating maps, and
specifying event handlers. Please see |vcscommand-customize| for more
details.
==============================================================================
3. vcscommand Intro *vcscommand*
*vcscommand-intro*
The vcscommand plugin provides global ex commands for manipulating
version-controlled source files, currently those controlled either by CVS or
Subversion. In general, each command operates on the current buffer and
accomplishes a separate source control function, such as update, commit, log,
and others (please see |vcscommand-commands| for a list of all available
commands). The results of each operation are displayed in a scratch buffer.
Several buffer variables are defined for those scratch buffers (please see
|vcscommand-buffer-variables|).
The notion of "current file" means either the current buffer, or, in the case
of a directory buffer (such as Explorer or netrw buffers), the directory (and
all subdirectories) represented by the the buffer.
For convenience, any vcscommand invoked on a vcscommand scratch buffer acts as
though it was invoked on the original file and splits the screen so that the
output appears in a new window.
Many of the commands accept revisions as arguments. By default, most operate
on the most recent revision on the current branch if no revision is specified.
Each vcscommand is mapped to a key sequence starting with the |<Leader>|
keystroke. The default mappings may be overridden by supplying different
mappings before the plugin is loaded, such as in the vimrc, in the standard
fashion for plugin mappings. For examples, please see
|vcscommand-mappings-override|.
The vcscommand plugin may be configured in several ways. For more details,
please see |vcscommand-customize|.
==============================================================================
4. vcscommand Manual *vcscommand-manual*
4.1 vcscommand commands *vcscommand-commands*
vcscommand defines the following commands:
|:VCSAdd|
|:VCSAnnotate|
|:VCSBlame|
|:VCSCommit|
|:VCSDelete|
|:VCSDiff|
|:VCSGotoOriginal|
|:VCSLog|
|:VCSRemove|
|:VCSRevert|
|:VCSReview|
|:VCSStatus|
|:VCSUpdate|
|:VCSVimDiff|
The following commands are specific to CVS files:
|:CVSEdit|
|:CVSEditors|
|:CVSUnedit|
|:CVSWatch|
|:CVSWatchAdd|
|:CVSWatchOn|
|:CVSWatchOff|
|:CVSWatchRemove|
|:CVSWatchers|
:VCSAdd *:VCSAdd*
This command adds the current file to source control. Please note, this does
not commit the newly-added file. All parameters to the command are passed to
the underlying VCS.
:VCSAnnotate[!] *:VCSAnnotate*
This command displays the current file with each line annotated with the
version in which it was most recently changed. If an argument is given, the
argument is used as a revision number to display. If not given an argument,
it uses the most recent version of the file (on the current branch, if under
CVS control). Additionally, if the current buffer is a VCSAnnotate buffer
already, the version number on the current line is used.
If '!' is used, the view of the annotated buffer is split so that the
annotation is in a separate window from the content, and each is highlighted
separately.
For CVS buffers, the 'VCSCommandCVSAnnotateParent' option, if set to non-zero,
will cause the above behavior to change. Instead of annotating the version on
the current line, the parent revision is used instead, crossing branches if
necessary.
With no arguments the cursor will jump to the line in the annotated buffer
corresponding to the current line in the source buffer.
:VCSBlame[!] *:VCSBlame*
Alias for |:VCSAnnotate|.
:VCSCommit[!] *:VCSCommit*
This command commits changes to the current file to source control.
If called with arguments, the arguments are the log message.
If '!' is used, an empty log message is committed.
If called with no arguments, this is a two-step command. The first step opens
a buffer to accept a log message. When that buffer is written, it is
automatically closed and the file is committed using the information from that
log message. The commit can be abandoned if the log message buffer is deleted
or wiped before being written.
Alternatively, the mapping that is used to invoke :VCSCommit (by default
|<Leader>|cc, please see |vcscommand-mappings|) can be used in the log message
buffer in Normal mode to immediately commit. This is useful if the
|VCSCommandCommitOnWrite| variable is set to 0 to disable the normal
commit-on-write behavior.
:VCSDelete *:VCSDelete*
Deletes the current file and removes it from source control. All parameters
to the command are passed to the underlying VCS.
:VCSDiff *:VCSDiff*
With no arguments, this displays the differences between the current file and
its parent version under source control in a new scratch buffer.
With one argument, the diff is performed on the current file against the
specified revision.
With two arguments, the diff is performed between the specified revisions of
the current file.
For CVS, this command uses the |VCSCommandCVSDiffOpt| variable to specify diff
options. If that variable does not exist, a plugin-specific default is used.
If you wish to have no options, then set it to the empty string.
For SVN, this command uses the |VCSCommandSVNDiffOpt| variable to specify diff
options. If that variable does not exist, the SVN default is used.
Additionally, |VCSCommandSVNDiffExt| can be used to select an external diff
application.
:VCSGotoOriginal *:VCSGotoOriginal*
This command jumps to the source buffer if the current buffer is a VCS scratch
buffer.
:VCSGotoOriginal!
Like ":VCSGotoOriginal" but also executes :bufwipeout on all VCS scrach
buffers associated with the original file.
:VCSInfo *:VCSInfo*
This command displays extended information about the current file in a new
scratch buffer.
:VCSLock *:VCSLock*
This command locks the current file in order to prevent other users from
concurrently modifying it. The exact semantics of this command depend on the
underlying VCS. This does nothing in CVS. All parameters are passed to the
underlying VCS.
:VCSLog *:VCSLog*
Displays the version history of the current file in a new scratch buffer. If
there is one parameter supplied, it is taken as as a revision parameters to be
passed through to the underlying VCS. Otherwise, all parameters are passed to
the underlying VCS.
:VCSRemove *:VCSRemove*
Alias for |:VCSDelete|.
:VCSRevert *:VCSRevert*
This command replaces the current file with the most recent version from the
repository in order to wipe out any undesired changes.
:VCSReview *:VCSReview*
Displays a particular version of the current file in a new scratch buffer. If
no argument is given, the most recent version of the file on the current
branch is retrieved.
:VCSStatus *:VCSStatus*
Displays versioning information about the current file in a new scratch
buffer. All parameters are passed to the underlying VCS.
:VCSUnlock *:VCSUnlock*
Unlocks the current file in order to allow other users from concurrently
modifying it. The exact semantics of this command depend on the underlying
VCS. All parameters are passed to the underlying VCS.
:VCSUpdate *:VCSUpdate*
Updates the current file with any relevant changes from the repository. This
intentionally does not automatically reload the current buffer, though vim
should prompt the user to do so if the underlying file is altered by this
command.
:VCSVimDiff *:VCSVimDiff*
Uses vimdiff to display differences between versions of the current file.
If no revision is specified, the most recent version of the file on the
current branch is used. With one argument, that argument is used as the
revision as above. With two arguments, the differences between the two
revisions is displayed using vimdiff.
With either zero or one argument, the original buffer is used to perform the
vimdiff. When the scratch buffer is closed, the original buffer will be
returned to normal mode.
Once vimdiff mode is started using the above methods, additional vimdiff
buffers may be added by passing a single version argument to the command.
There may be up to 4 vimdiff buffers total.
Using the 2-argument form of the command resets the vimdiff to only those 2
versions. Additionally, invoking the command on a different file will close
the previous vimdiff buffers.
:CVSEdit *:CVSEdit*
This command performs "cvs edit" on the current file. Yes, the output buffer
in this case is almost completely useless.
:CVSEditors *:CVSEditors*
This command performs "cvs edit" on the current file.
:CVSUnedit *:CVSUnedit*
Performs "cvs unedit" on the current file. Again, yes, the output buffer here
is basically useless.
:CVSWatch *:CVSWatch*
This command takes an argument which must be one of [on|off|add|remove]. The
command performs "cvs watch" with the given argument on the current file.
:CVSWatchAdd *:CVSWatchAdd*
This command is an alias for ":CVSWatch add"
:CVSWatchOn *:CVSWatchOn*
This command is an alias for ":CVSWatch on"
:CVSWatchOff *:CVSWatchOff*
This command is an alias for ":CVSWatch off"
:CVSWatchRemove *:CVSWatchRemove*
This command is an alias for ":CVSWatch remove"
:CVSWatchers *:CVSWatchers*
This command performs "cvs watchers" on the current file.
4.2 Mappings *vcscommand-mappings*
By default, a mapping is defined for each command. These mappings execute the
default (no-argument) form of each command.
|<Leader>|ca VCSAdd
|<Leader>|cn VCSAnnotate
|<Leader>|cN VCSAnnotate!
|<Leader>|cc VCSCommit
|<Leader>|cD VCSDelete
|<Leader>|cd VCSDiff
|<Leader>|cg VCSGotoOriginal
|<Leader>|cG VCSGotoOriginal!
|<Leader>|ci VCSInfo
|<Leader>|cl VCSLog
|<Leader>|cL VCSLock
|<Leader>|cr VCSReview
|<Leader>|cs VCSStatus
|<Leader>|cu VCSUpdate
|<Leader>|cU VCSUnlock
|<Leader>|cv VCSVimDiff
Only for CVS buffers:
|<Leader>|ce CVSEdit
|<Leader>|cE CVSEditors
|<Leader>|ct CVSUnedit
|<Leader>|cwv CVSWatchers
|<Leader>|cwa CVSWatchAdd
|<Leader>|cwn CVSWatchOn
|<Leader>|cwf CVSWatchOff
|<Leader>|cwf CVSWatchRemove
*vcscommand-mappings-override*
The default mappings can be overridden by user-provided instead by mapping to
<Plug>CommandName. This is especially useful when these mappings collide with
other existing mappings (vim will warn of this during plugin initialization,
but will not clobber the existing mappings).
There are three methods for controlling mapping:
First, maps can be overriden for individual commands. For instance, to
override the default mapping for :VCSAdd to set it to '\add', add the
following to the vimrc:
nmap \add <Plug>VCSAdd
Second, the default map prefix ('<Leader>c') can be overridden by defining the
|VCSCommandMapPrefix| variable.
Third, the entire set of default maps can be overridden by defining the
|VCSCommandMappings| variable.
4.3 Automatic buffer variables *vcscommand-buffer-variables*
Several buffer variables are defined in each vcscommand result buffer. These
may be useful for additional customization in callbacks defined in the event
handlers (please see |vcscommand-events|).
The following variables are automatically defined:
b:VCSCommandOriginalBuffer *b:VCSCommandOriginalBuffer*
This variable is set to the buffer number of the source file.
b:VCSCommandCommand *b:VCSCommandCommand*
This variable is set to the name of the vcscommand that created the result
buffer.
b:VCSCommandSourceFile *b:VCSCommandSourceFile*
This variable is set to the name of the original file under source control.
b:VCSCommandVCSType *b:VCSCommandVCSType*
This variable is set to the type of the source control. This variable is also
set on the original file itself.
==============================================================================
5. Configuration and customization *vcscommand-customize*
*vcscommand-config*
The vcscommand plugin can be configured in several ways: by setting
configuration variables (see |vcscommand-options|) or by defining vcscommand
event handlers (see |vcscommand-events|). Additionally, the vcscommand plugin
supports a customized status line (see |vcscommand-statusline| and
|vcscommand-buffer-management|).
5.1 vcscommand configuration variables *vcscommand-options*
Several variables affect the plugin's behavior. These variables are checked
at time of execution, and may be defined at the window, buffer, or global
level and are checked in that order of precedence.
The following variables are available:
|VCSCommandCommitOnWrite|
|VCSCommandCVSDiffOpt|
|VCSCommandCVSExec|
|VCSCommandDeleteOnHide|
|VCSCommandDiffSplit|
|VCSCommandDisableAll|
|VCSCommandDisableMappings|
|VCSCommandDisableExtensionMappings|
|VCSCommandDisableMenu|
|VCSCommandEdit|
|VCSCommandEnableBufferSetup|
|VCSCommandMappings|
|VCSCommandMapPrefix|
|VCSCommandMenuPriority|
|VCSCommandMenuRoot|
|VCSCommandResultBufferNameExtension|
|VCSCommandResultBufferNameFunction|
|VCSCommandSplit|
|VCSCommandSVKExec|
|VCSCommandSVNDiffExt|
|VCSCommandSVNDiffOpt|
|VCSCommandSVNExec|
|VCSCommandVCSTypeOverride|
|VCSCommandVCSTypePreference|
VCSCommandCommitOnWrite *VCSCommandCommitOnWrite*
This variable, if set to a non-zero value, causes the pending commit
to take place immediately as soon as the log message buffer is written.
If set to zero, only the VCSCommit mapping will cause the pending commit to
occur. If not set, it defaults to 1.
VCSCommandCVSExec *VCSCommandCVSExec*
This variable controls the executable used for all CVS commands If not set,
it defaults to "cvs".
VCSCommandDeleteOnHide *VCSCommandDeleteOnHide*
This variable, if set to a non-zero value, causes the temporary result buffers
to automatically delete themselves when hidden.
VCSCommandCVSDiffOpt *VCSCommandCVSDiffOpt*
This variable, if set, determines the options passed to the diff command of
CVS. If not set, it defaults to 'u'.
VCSCommandDiffSplit *VCSCommandDiffSplit*
This variable overrides the |VCSCommandSplit| variable, but only for buffers
created with |:VCSVimDiff|.
VCSCommandDisableAll *VCSCommandDisableAll*
This variable, if set, prevents the plugin or any extensions from loading at
all. This is useful when a single runtime distribution is used on multiple
systems with varying versions.
VCSCommandDisableMappings *VCSCommandDisableMappings*
This variable, if set to a non-zero value, prevents the default command
mappings from being set. This supercedes
|VCSCommandDisableExtensionMappings|.
VCSCommandDisableExtensionMappings *VCSCommandDisableExtensionMappings*
This variable, if set to a non-zero value, prevents the default command
mappings from being set for commands specific to an individual VCS.
VCSCommandEdit *VCSCommandEdit*
This variable controls whether the original buffer is replaced ('edit') or
split ('split'). If not set, it defaults to 'split'.
VCSCommandDisableMenu *VCSCommandDisableMenu*
This variable, if set to a non-zero value, prevents the default command menu
from being set.
VCSCommandEnableBufferSetup *VCSCommandEnableBufferSetup*
This variable, if set to a non-zero value, activates VCS buffer management
mode see (|vcscommand-buffer-management|). This mode means that the
'VCSCommandBufferInfo' variable is filled with version information if the file
is VCS-controlled. This is useful for displaying version information in the
status bar.
VCSCommandMappings *VCSCommandMappings*
This variable, if set, overrides the default mappings used for shortcuts. It
should be a List of 2-element Lists, each containing a shortcut and function
name pair. The value of the '|VCSCommandMapPrefix|' variable will be added to
each shortcut.
VCSCommandMapPrefix *VCSCommandMapPrefix*
This variable, if set, overrides the default mapping prefix ('<Leader>c').
This allows customization of the mapping space used by the vcscommand
shortcuts.
VCSCommandMenuPriority *VCSCommandMenuPriority*
This variable, if set, overrides the default menu priority '' (empty)
VCSCommandMenuRoot *VCSCommandMenuRoot*
This variable, if set, overrides the default menu root 'Plugin.VCS'
VCSCommandResultBufferNameExtension *VCSCommandResultBufferNameExtension*
This variable, if set to a non-blank value, is appended to the name of the VCS
command output buffers. For example, '.vcs'. Using this option may help
avoid problems caused by autocommands dependent on file extension.
VCSCommandResultBufferNameFunction *VCSCommandResultBufferNameFunction*
This variable, if set, specifies a custom function for naming VCS command
output buffers. This function is expected to return the new buffer name, and
will be passed the following arguments:
command - name of the VCS command being executed (such as 'Log' or
'Diff').
originalBuffer - buffer number of the source file.
vcsType - type of VCS controlling this file (such as 'CVS' or 'SVN').
statusText - extra text associated with the VCS action (such as version
numbers).
VCSCommandSplit *VCSCommandSplit*
This variable controls the orientation of the various window splits that
may occur.
If set to 'horizontal', the resulting windows will be on stacked on top of
one another. If set to 'vertical', the resulting windows will be
side-by-side. If not set, it defaults to 'horizontal' for all but
VCSVimDiff windows. VCSVimDiff windows default to the user's 'diffopt'
setting, if set, otherwise 'vertical'.
VCSCommandSVKExec *VCSCommandSVKExec*
This variable controls the executable used for all SVK commands If not set,
it defaults to "svk".
VCSCommandSVNDiffExt *VCSCommandSVNDiffExt*
This variable, if set, is passed to SVN via the --diff-cmd command to select
an external application for performing the diff.
VCSCommandSVNDiffOpt *VCSCommandSVNDiffOpt*
This variable, if set, determines the options passed with the '-x' parameter
to the SVN diff command. If not set, no options are passed.
VCSCommandSVNExec *VCSCommandSVNExec*
This variable controls the executable used for all SVN commands If not set,
it defaults to "svn".
VCSCommandVCSTypeOverride *VCSCommandVCSTypeOverride*
This variable allows the VCS type detection to be overridden on a path-by-path
basis. The value of this variable is expected to be a List of Lists. Each
item in the high-level List is a List containing two elements. The first
element is a regular expression that will be matched against the full file
name of a given buffer. If it matches, the second element will be used as the
VCS type.
VCSCommandVCSTypePreference *VCSCommandVCSTypePreference*
This variable allows the VCS type detection to be weighted towards a specific
VCS, in case more than one potential VCS is detected as useable. The format
of the variable is either a list or a space-separated string containing the
ordered-by-preference abbreviations of the preferred VCS types.
5.2 VCSCommand events *vcscommand-events*
For additional customization, vcscommand can trigger user-defined events.
Event handlers are provided by defining User event autocommands (see
|autocommand|, |User|) in the vcscommand group with patterns matching the
event name.
For instance, the following could be added to the vimrc to provide a 'q'
mapping to quit a vcscommand scratch buffer:
augroup VCSCommand
au User VCSBufferCreated silent! nmap <unique> <buffer> q :bwipeout<cr>
augroup END
The following hooks are available:
VCSBufferCreated This event is fired just after a vcscommand
result buffer is created and populated. It is
executed within the context of the vcscommand
buffer. The vcscommand buffer variables may
be useful for handlers of this event (please
see |vcscommand-buffer-variables|).
VCSBufferSetup This event is fired just after vcscommand buffer
setup occurs, if enabled.
VCSPluginInit This event is fired when the vcscommand plugin
first loads.
VCSPluginFinish This event is fired just after the vcscommand
plugin loads.
VCSVimDiffFinish This event is fired just after the VCSVimDiff
command executes to allow customization of,
for instance, window placement and focus.
Additionally, there is another hook which is used internally to handle loading
the multiple scripts in order. This hook should probably not be used by an
end user without a good idea of how it works. Among other things, any events
associated with this hook are cleared after they are executed (during
vcscommand.vim script initialization).
VCSLoadExtensions This event is fired just before the
VCSPluginFinish. It is used internally to
execute any commands from the VCS
implementation plugins that needs to be
deferred until the primary plugin is
initialized.
5.3 vcscommand buffer naming *vcscommand-naming*
vcscommand result buffers use the following naming convention:
[{VCS type} {VCS command} {Source file name}]
If additional buffers are created that would otherwise conflict, a
distinguishing number is added:
[{VCS type} {VCS command} {Source file name}] (1,2, etc)
5.4 vcscommand status line support *vcscommand-statusline*
It is intended that the user will customize the |'statusline'| option to
include vcscommand result buffer attributes. A sample function that may be
used in the |'statusline'| option is provided by the plugin,
VCSCommandGetStatusLine(). In order to use that function in the status line, do
something like the following:
set statusline=%<%f\ %{VCSCommandGetStatusLine()}\ %h%m%r%=%l,%c%V\ %P
of which %{VCSCommandGetStatusLine()} is the relevant portion.
The sample VCSCommandGetStatusLine() function handles both vcscommand result
buffers and VCS-managed files if vcscommand buffer management is enabled
(please see |vcscommand-buffer-management|).
5.5 vcscommand buffer management *vcscommand-buffer-management*
The vcscommand plugin can operate in buffer management mode, which means that
it attempts to set a buffer variable ('VCSCommandBufferInfo') upon entry into
a buffer. This is rather slow because it means that the VCS will be invoked
at each entry into a buffer (during the |BufEnter| autocommand).
This mode is disabled by default. In order to enable it, set the
|VCSCommandEnableBufferSetup| variable to a true (non-zero) value. Enabling
this mode simply provides the buffer variable mentioned above. The user must
explicitly include information from the variable in the |'statusline'| option
if they are to appear in the status line (but see |vcscommand-statusline| for
a simple way to do that).
The 'VCSCommandBufferInfo' variable is a list which contains, in order, the
revision of the current file, the latest revision of the file in the
repository, and (for CVS) the name of the branch. If those values cannot be
determined, the list is a single element: 'Unknown'.
==============================================================================
6. SSH "integration" *vcscommand-ssh*
The following instructions are intended for use in integrating the
vcscommand.vim plugin with an SSH-based CVS environment.
Familiarity with SSH and CVS are assumed.
These instructions assume that the intent is to have a message box pop up in
order to allow the user to enter a passphrase. If, instead, the user is
comfortable using certificate-based authentication, then only instructions
6.1.1 and 6.1.2 (and optionally 6.1.4) need to be followed; ssh should then
work transparently.
6.1 Environment settings *vcscommand-ssh-env*
6.1.1 CVSROOT should be set to something like:
:ext:user@host:/path_to_repository
6.1.2 CVS_RSH should be set to:
ssh
Together, those settings tell CVS to use ssh as the transport when
performing CVS calls.
6.1.3 SSH_ASKPASS should be set to the password-dialog program. In my case,
running gnome, it's set to:
/usr/libexec/openssh/gnome-ssh-askpass
This tells SSH how to get passwords if no input is available.
6.1.4 OPTIONAL. You may need to set SSH_SERVER to the location of the cvs
executable on the remote (server) machine.
6.2 CVS wrapper program *vcscommand-ssh-wrapper*
Now you need to convince SSH to use the password-dialog program. This means
you need to execute SSH (and therefore CVS) without standard input. The
following script is a simple perl wrapper that dissasociates the CVS command
from the current terminal. Specific steps to do this may vary from system to
system; the following example works for me on linux.
#!/usr/bin/perl -w
use strict;
use POSIX qw(setsid);
open STDIN, '/dev/null';
fork and do {wait; exit;};
setsid;
exec('cvs', @ARGV);
6.3 Configuring vcscommand.vim *vcscommand-ssh-config*
At this point, you should be able to use your wrapper script to invoke CVS with
various commands, and get the password dialog. All that's left is to make CVS
use your newly-created wrapper script.
6.3.1 Tell vcscommand.vim what CVS executable to use. The easiest way to do this
is globally, by putting the following in your .vimrc:
let VCSCommandCVSExec=/path/to/cvs/wrapper/script
6.4 Where to go from here *vcscommand-ssh-other*
The script given above works even when non-SSH CVS connections are used,
except possibly when interactively entering the message for CVS commit log
(depending on the editor you use... VIM works fine). Since the vcscommand.vim
plugin handles that message without a terminal, the wrapper script can be used
all the time.
This allows mixed-mode operation, where some work is done with SSH-based CVS
repositories, and others with pserver or local access.
It is possible, though beyond the scope of the plugin, to dynamically set the
CVS executable based on the CVSROOT for the file being edited. The user
events provided (such as VCSBufferCreated and VCSBufferSetup) can be used to
set a buffer-local value (b:VCSCommandCVSExec) to override the CVS executable
on a file-by-file basis. Alternatively, much the same can be done (less
automatically) by the various project-oriented plugins out there.
It is highly recommended for ease-of-use that certificates with no passphrase
or ssh-agent are employed so that the user is not given the password prompt
too often.
==============================================================================
7. Changes from cvscommand *cvscommand-changes*
1. Require Vim 7 in order to leverage several convenient features; also
because I wanted to play with Vim 7.
2. Renamed commands to start with 'VCS' instead of 'CVS'. The exceptions are
the 'CVSEdit' and 'CVSWatch' family of commands, which are specific to CVS.
3. Renamed options, events to start with 'VCSCommand'.
4. Removed option to jump to the parent version of the current line in an
annotated buffer, as opposed to the version on the current line. This made
little sense in the branching scheme used by subversion, where jumping to a
parent branch required finding a different location in the repository. It
didn't work consistently in CVS anyway.
5. Removed option to have nameless scratch buffers.
6. Changed default behavior of scratch buffers to split the window instead of
displaying in the current window. This may still be overridden using the
'VCSCommandEdit' option.
7. Split plugin into multiple plugins.
8. Added 'VCSLock' and 'VCSUnlock' commands. These are implemented for
subversion but not for CVS. These were not kept specific to subversion as they
seemed more general in nature and more likely to be supported by any future VCS
supported by this plugin.
9. Changed name of buffer variables set by commands.
'b:cvsOrigBuffNR' became 'b:VCSCommandOriginalBuffer'
'b:cvscmd' became 'b:VCSCommandCommand'
10. Added new automatic variables to command result buffers.
'b:VCSCommandSourceFile'
'b:VCSCommandVCSType'
==============================================================================
8. Known bugs *vcscommand-bugs*
Please let me know if you run across any.
CVSUnedit may, if a file is changed from the repository, provide prompt text
to determine whether the changes should be thrown away. Currently, that text
shows up in the CVS result buffer as information; there is no way for the user
to actually respond to the prompt and the CVS unedit command does nothing. If
this really bothers anyone, please let me know.
VCSVimDiff, when using the original (real) source buffer as one of the diff
buffers, uses some hacks to try to restore the state of the original buffer
when the scratch buffer containing the other version is destroyed. There may
still be bugs in here, depending on many configuration details.
vim:tw=78:ts=8:ft=help