2016-12-16 76 views
0

我想在vim中重写'w',所以它会调用外部程序并过滤缓冲区而不是写入文件。互联网上有很好的例子说明如何做到这一点。我尝试了一个vim.wikia.com,但vim总是抱怨E488: Trailing characters。这是我的vimrc命令:用cabbrev覆盖内置命令

cabbrev w <c-r>=(getcmdtype()==':' && getcmdpos()==1 ? 'W' : 'w')<CR> 

我对vim脚本不是很熟悉。我尝试从线路末端删除<CR>,但没有运气。

UPDATE

因为我想定制化地运行VIM我与-u标志运行它。我注意到,使用该标志时,vim的行为与使用该标志相比有所不同

对于-u标志,扩展缩写是需要作为代码进行评估的内容。 enter image description here

如果没有标志,英文缩写是什么意图是(这里我输入从vim的提示cabbrev规则) enter image description here

+0

我不能重现此错误的cabbrev语法。当我运行它,然后尝试运行':w'时,它会被重新映射到'W',这会导致完全不相关的错误。你有没有试过这个'.vimrc'?你究竟想要完成什么? – DJMcMayhem

+0

试图从vim本身输入命令。我仍然得到'E488:尾随字符'。 –

回答

0

关于-u标志vim的手册页这样说:

-u {vimrc}使用 初始化文件{vimrc}中的命令。所有其他初始化 都被跳过。用它来编辑一种特殊类型的文件。通过给出名称“NONE”,它也可以用于跳过所有的 初始化。有关更多 的详细信息,请参阅vim中的“:帮助初始化”。

显然,当该标志用于初始化从 VIM的/ etc /不执行的vimrc还有我发现这个选项:

set nocompatible 

vim的帮助下约兼容选项:

该选项的作用是使Vim更加兼容VI,或者使得Vim以更有用的方式运行。这是一种特殊的 选项,因为当它被设置或重置时,其他选项也会变为 作为副作用。小心:设置或重置此选项可能会产生许多意想不到的效果:映射以另一种方式解释, 撤消行为有所不同,等等。如果您在vimrc 文件中设置了此选项,则应该首先将其置于开始位置。

...

的vimrc的gvimrc文件中找到,而Vim启动, 这个选项关闭,而一直没 修改的选项都设置为Vim默认。实际上,这意味着 表示当文件存在时,Vim将使用默认值Vim ,否则将使用Vi的默认值。 (注意:这不是 发生在系统范围的vimrc或gvimrc文件中,,也不是 和-u参数)的文件。

set nocompatible使得从问题的工作