我知道我的标题不是描述性/清晰的,所以让我解释一下.
昨天我可以跨Vimgrep和copen,所以我添加了以下行.vimrc
nnoremap <silent>,/ :execute 'vimgrep /'.@/.'/g %'<CR>:copen<CR>
它所做的是为vim中搜索(突出显示)的单词打开一个quickfix列表.
现在当您按回车< CR>在quickfix列表中,您将转到主Vim窗口中的相应行.
现在我遇到的问题是我已经映射了我的< CR like map< CR> O< ESC>这在当前行之下创建一条新行.
所以,你可以看到有两个冲突b / w.所以,我正在尝试的是提出一个vim的功能
伪代码
function IfNotInsideQuickFix() if buffer != QuickFix then map <CR> o<Esc> elif buffer == QuickFix Normal behavIoUr Call function
以下是:缓冲区的输出
:buffers 1 #a "test.cs" line 0 2 %a- "[Quickfix List]" line 1 Press ENTER or type command to continue
我没有写vim函数的经验.所以,有人可以指导我吧.
PS:我知道我可以改变我的Vim映射来创建一个新的行,但是我想学习如何通过Vim函数
您可以保留您的全球< CR>映射原样,但本地在quickfix窗口中还原原来的行为.这通过以下方式完成:autocmd(当quickfix窗口打开时触发),映射(不重映射)< CR> (本地通过<缓冲区>)到其本身.
:autocmd BufReadPost quickfix nnoremap <buffer> <CR> <CR>