Permalink
Browse files

Version 1: Initial upload

  • Loading branch information...
0 parents commit 8ff4b97690a637ae1238b0ed3c6051e12af5efc8 @coot coot committed with Oct 1, 2012
Showing with 438 additions and 0 deletions.
  1. +152 −0 README
  2. +286 −0 plugin/cmd_alias.vim
@@ -0,0 +1,152 @@
+This is a mirror of http://www.vim.org/scripts/script.php?script_id=4250
+
+" Description
+" ===========
+"
+" Note: the interface has changed slightly (in version 2): 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, wihtout vim restriction:
+" user defined commands via :command must begin with a captial letter. Using
+" this plugin you make an alias to a command where the alias, is any sequence.
+" You can also register a defult 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
+" executed. 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 a the plugin might substitute part of a command name. So don't use
+" it unless you really want to experiment - you've been warned ;).
+"
+" Fork me on GitHub:
+" https://github.com/coot/cmdalias_vim
+"
+" If you don't provide any argument to the :CmdAlias command it will list all
+" aliases.
+"
+" Examples:
+" ---------
+" ```
+" :CmdAlias ali\%[as] CmdAlias
+" ```
+" Note: this alias would not work if we defined it with [history]=1.
+" ```
+" :CmdAlias s %s
+" ```
+" Change the default range of :s command from the current line to whole
+" buffer. Note that :su will 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] BufClose
+" ```
+" You 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}/-1s
+" ```
+" The :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
+" more. Thus we have four slashes (like in *Python* :).
+"
+" VIMRC
+" -----
+"
+" To configure aliases on startup you haveto add the following lines to your
+" vimrc file:
+" ```
+" augroup VIMRC_aliases
+" au!
+" au VimEnter * CmdAlias ...
+" ...
+" augroup END
+" ```
+"
+" Other Commands and Maps:
+" ------------------------
+"
+" ```
+" :CmdAliasToggle
+" ```
+" toggles on/of the aliases. Since the plugin remaps \<CR\> in the command line
+" this just delets/sets up the \<CR\> map. When you want to type a function:
+" ```
+" :fun! X()
+" ```
+" or use the expression register @= you need to switch aliases
+" off. 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](http://www.vim.org/scripts/script.php?script_id=4224)
+" you need to update it to version 3 (otherwise you will get an error).
+"
+" There is another [plugin](http://www.vim.org/scripts/script.php?script_id=746)
+" with the same functionality, but different implementation and thus a different
+" limitations. It uses cabbreviations. The problem with them is that it is
+" more 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 %s
+" ```
+" you can run:
+" ```
+" :S/aaa/yyy/|S/bbb/xxx
+" ```
+" Note: the first command has to end with / (to use |, this is a vim
+" requirement.)
+"
+" Note: using the expression register:
+" Since \<C-R\> is remapped in command line, you can not use it when you enter
+" the expression register (:help ^R=). There is a patch on the way which fixes
+" this disabling maps in expression register. Before it get accepted the
+" plugin defies a map:
+" ```
+" 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)
+
Oops, something went wrong. Retry.

0 comments on commit 8ff4b97

Please sign in to comment.