在vim上发生错误的映射(E10:\后跟/,?或&)

时间:2011-01-22 05:36:48

标签: vim

您好我正在使用MacVim 7.3 我正在关注名为smash into vim的PeepCode教程。

其中一个主题是为某些命令分配各种“映射”(我将它们视为快捷方式或别名)。

例如,这是我的。 vimrc 文件的一部分(见下文) 帮助文件说默认情况下被指定为反斜杠(\)。但是,当我进入命令行模式并输入:\ tt时,我收到以下错误:

E10:\应该跟/,?或&

对我做错了什么的想法?我可以告诉macvim b / c我正在使用我的.vimrc文件我使用该文件来交换分号和冒号绑定现在;将导致编辑器进入命令行模式。

" Tab mappings.
map <leader>tt :tabnew<cr>
map <leader>te :tabedit
map <leader>tc :tabclose<cr>
map <leader>to :tabonly<cr>
map <leader>tn :tabnext<cr>
map <leader>tp :tabprevious<cr>
map <leader>tf :tabfirst<cr>
map <leader>tl :tablast<cr>
map <leader>tm :tabmove


" Controversial...swap colon and semicolon for easier commands
nnoremap ; :
nnoremap : ;

vnoremap ; :
vnoremap : ;

2 个答案:

答案 0 :(得分:9)

当您映射<leader>tt之类的内容时,它在命令模式下无效(使用:调用),但在正常模式下。

所以你要做的就是在没有\tt的情况下输入:,看看会发生什么:有希望打开一个新标签页。

关于在定义新映射时使用<leader>,主要的兴趣是,如果您对\的使用不满意,可以在开始时按以下方式重新定义密钥您的.vimrc

:let mapleader = ","

并且您的领导者密钥将在每个后续映射命令中更改:\tt变为,tt

祝你成为精通Vim用户的好运!

答案 1 :(得分:2)

您有两个问题:一个是您使用map然后重新映射分号,因此map <leader>tt :tabnew<CR>尝试执行;tabnew<CR>;重复之前的t / T / f / F动作,ta将光标移动到下一个an尝试重复上一个搜索等等),它将无效。您应该尽可能使用noremap,除非您知道自己在做什么,否则不要使用map,而我还建议您将nore更改为noremap :我认为您不需要从可视化和特别是操作员待定模式更改选项卡。第二个问题是nnoremap在正常模式下重新映射命令,因此您需要输入noremap,而不是\tt:\tt