Ⅰ. 插件描述
This plugin allows for making aliases for vim commands without vim restrictionsⅡ. 基本信息
|
Ⅲ. 安装方法
使用Vundle管理器安装
在你的.vimrc下添加:Plugin 'coot/commandalias'
… 然后在Vim中运行以下命令:
:source %
:PluginInstall
对于Vundle版本 < 0.10.2,请用上面的Bundle替换Plugin。
使用NeoBundle管理器安装
在你的.vimrc下添加:NeoBundle 'coot/commandalias'
… 然后在Vim中运行以下命令:
:source %
:NeoBundleInstall
使用VimPlug管理器安装
在你的.vimrc下添加:Plug 'coot/commandalias'
… 然后在Vim中运行以下命令:
:source %
:PlugInstall
使用Pathogen管理器安装
在终端中运行以下命令:cd ~/.vim/bundle
git clone https://github.com/coot/cmdalias_vim
Ⅳ. 文档说明
Description
Note: the interface has changed slightly: buflocal aliases added. To redefine
default range add it to the cmd rather than to the alias (this seems to be
more intuitive).
This plugin implements aliases for command names, without vim restriction:
user defined commands via :command must begin with a capital letter. Using
this plugin you make an alias to a command where the alias, is any sequence.
You can also register a default range or count with the alias. In this way
you can change the default range or count of vim commands.
To define alias use the command:
:CmdAlias [alias] [range][command] [history] [buflocal] [match_end] where [alias] is the alias name, [command] is the command that should be
- You might pretend new default
[range]or count to the command. The[alias]is any vim pattern that will be used to match what you are entering in
the : command line (the pattern will have pretended \C^ and appended \\> -
the later one unless [match_end] is specified and equal 0). For
commands which do not run external programs you can also set [history]=1
(default is 0), then the command history will remember what you have typped
rather than what was executed. But usage of it is limited, for example you can
use with commands that echo some output because it will be hidden by next call
to histdel() vim function. If [buflocal] has true value (1 for example)
then the alias will be only valid in the current buffer (it will be denotes
with @ when listing the aliases as Vim does for maps).
Note: If you define [match_end] = 0 you might fall into troubles, simply
because the plugin might substitute part of a command name. So don't use
it unless you really want to experiment - you've been warned ;).
If you don't provide any argument to the :CmdAlias command it will list all
aliases.
The order in which you define aliases matters. More recent aliases are matched
- If you want to list the aliases in alphabetic order use:
:CmdAliasIf you want to list them in the order they are tried:
:CmdAlias!Note that
:CmdAlias {alias}will list all aliases which starts with {alias} but
:CmdAlias! {alias}will remove the {alias} (has to be equal to the registered alias).
Examples:
:CmdAlias ali\%[as] CmdAliasNote: this alias would not work if we defined it with [history]=1.
:CmdAlias s %sChange the default range of :s command from the current line to whole
- Note that
:suwill act with vim default range (the current line).
:CmdAlias a\%[ppend] Append define alias to the user command Append which will overwrite the vim command
:append. The \%[...] allows that if you type: 'a' or 'ap' or 'app', ...
or 'append' then the Append command will be used (as with vim many commands)
:CmdAlias bc\%[lose] BufCloseYou will find the handy BufClose command in BufClose plugin by Christian
Robinson.
Tip: to find if an alias is not coliding type ':<alias><C-d>'.
See :help c^D.
:CmdAlias SP 1,/\\\\begin{document}/-1sThe :SP command will substitute in the LaTeX preambule (which starts in the
first line and ends before \begin{document}). Note that the Vim pattern to
find \begin... is \\begin... and each backslash needs to be escaped onece
- Thus we have four slashes (like in Python :).
VIMRC
To configure aliases on startup you have to add the following lines to your
vimrc file:
augroup VIMRC_aliases
au!
au VimEnter * CmdAlias ...
...
augroup ENDOther Commands and Maps:
:CmdAliasToggle toggles on/of the aliases. Since the plugin remaps <CR> in the command line
this just deletes/sets up the <CR> map. When you want to type a function:
:fun! X()The plugin also defines <C-M> map to <CR> which doesn't trigger
aliasing mechanism. So you can type ':fun! X()<C-M>' on the command line.
:CmdAlias! {alias} removes {alias}, this command has a nice completion.
Note: If you have installed my system plugin
you need to update it to version 3 (otherwise you will get an error).
There is another plugin
with the same functionality, but different implementation and thus a different
- It uses cabbreviations. The problem with them is that it is
- difficult to get the command bang working (what was the purpose of
implementing this plugin). The range and the count probably could be
implemented using the same range parser used by this plugin. The advantage of
the cabbreviations approach is that after hitting the ' ' you get the real
command together with its completion. Implementing completion for aliases
within this approach would be quite tedious.
The aliasing works also when joining commands on the command line with "|",
for example with a dummy alias:
Alias S %syou can run:
:S/aaa/yyy/|S/bbb/xxxNote: the first command has to end with / (to use |, this is a vim
requirement.)
Note: using the expression register: you need Vim 7.3.686. There is also:
cnoremap <C-M> <CR>It will not trigger aliases, any way it might be a good idea to have such
a map in case you want to avoid aliases.
If you want to debug define a list
let g:cmd_alias_debug = []and for all calls an entry to this list will be appended.
(except command lines which matches cmd_alias_debug since we don't want to
record accessing to this variable)
Ideas for aliases:
CmdAlias h\%[elp] top\ help " very useful if you use 'splitbelow', but you want help to split above
CmdAlias re reg\ "0-*+/ 1
CmdAlias rn reg\ 123456789 1
CmdAlias ra reg abcdefghijklmnopqrstuwxyz 1
CmdAlias bc\%[close] BufCloseFor the last alias one you need the
BufClose plugin.
Author: Marcin Szamotulski
Email: mszamot [AT] gmail [DOT] com
Copyright: © Marcin Szamotulski, 2012-2014
License: vim-license, see :help license