背景:我正在使用skwp's dotfiles,他最近的changes打破了我日常使用的一些功能。
我没有在全局范围内设置映射,而是在quickfixes退出后尝试nnoremap
两个快捷方式输入快捷方式和nunmap
。
BTW ,我认为syntastic用于linting,它会调用quickfix / location列表。
以下是代码:
augroup quickfixShortcutsGroup
autocmd!
autocmd BufWrite * :echom "Foo"
" au BufReadPost quickfix nnoremap <silent> <C-z> :cp<CR>
" au BufReadPost quickfix nnoremap <silent> <C-x> :cn<CR>
au BufWinEnter quickfix nnoremap <silent> <C-z> :cp<CR>
au BufWinEnter quickfix :echo '1'
au BufWinLeave quickfix nnoremap <silent> <C-z> :cp<CR>
au BufWinLeave quickfix :echo 'BufWinLeave'
au BufLeave qf :echo 'BufLeave'
au BufUnload qf :echo 'unload qf'
" au BufLeave qf noremap <silent> <C-z> :cb<CR>
" au BufLeave quickfix noremap <silent> <C-z> :cb<CR>
" au BufWinLeave quickfix noremap <silent> <C-z> :cb<CR>
" au BufWinLeave quickfix nunmap <C-z>
" au BufWinLeave quickfix :echom 'Hello'<cr>
" BufWinEnter
augroup END
阅读参考后:
我仍然无法使unmap
个事件正常工作,即BufWinLeave
,BufUnload
,BufLeave
未被调用。
Vimers可以告诉我应该使用哪些事件并帮助我解决这个问题吗?提前感谢您的帮助。
答案 0 :(得分:2)
如:help BufWinLeave
所述,当前缓冲区“%”可能与正在卸载的缓冲区“”不同。因此,您需要一个全局autocmd,并解析剩余的缓冲区编号,然后检查 quickfix 'buftype'
:
autocmd! BufWinLeave * if getbufvar(bufnr(expand('<afile>')), '&buftype') ==# 'quickfix' | echo "leaving quickfix" | endif
但总的来说,我建议不要使用这些技巧,尤其是条件映射。您的<C-z>
/ <C-x>
映射仍然是全局的,现在只取决于quickfix列表是否可见。这对于肌肉记忆是不利的,并且关键组合的过载会带来精神上的负担。我宁愿完全摆脱映射,或分配不同的(如果可能更长)键。
还有下一个复杂因素:Vim“发行版”和其他人的dotfiles通过快速安装和开箱即用的设置吸引你,但你付出的代价却增加了复杂性(你需要了解Vim的运行时加载方案和分配的任意约定)和不灵活性(分布可能使一些事情变得更容易,但其他事情非常困难)。 Vim非常可定制,使用其他人的定制毫无意义。
答案 1 :(得分:0)
如果你希望<?php
$installer = $this;
$installer->startSetup();
$setup = Mage::getModel('customer/entity_setup', 'core_setup');
$setup->addAttribute('customer', 'is_activated', array(
'type' => 'int',
'input' => 'select',
'label' => 'Activated',
'global' => 1,
'visible' => 1,
'required' => 0,
'user_defined' => 0,
'default' => 1,
'visible_on_front' => 0,
'source' => 'eav/entity_attribute_source_boolean',
));
$installer->endSetup();
这两个映射在quickfix上输入,nnoremap
在quickfix退出后,你可以
nunmap
或者您可以使用本地缓冲区映射来缩短代码
" map silently upon entering Quickfix
autocmd BufWinEnter * if &buftype == 'quickfix'
\| nnoremap <silent> <C-x> :cn<CR>
\| nnoremap <silent> <C-z> :cp<CR>
\| endif
" unmap upon leaving Quickfix
autocmd BufWinLeave * if &buftype == 'quickfix'
\| nunmap <C-x>
\| nunmap <C-z>
\| endif
每次进入或离开缓冲区时都会调用这些" map silently upon entering Quickfix, and only for Quickfix
autocmd BufWinEnter * if &buftype == 'quickfix'
\| nnoremap <buffer><silent> <C-x> :cn<CR>
\| nnoremap <buffer><silent> <C-z> :cp<CR>
\| endif
。因此,Sato Katsura suggested添加到您的autocmd
~/.vim/ftplugin/qf.vim
您可以考虑阅读以下内容: