windows – VIM:如何根据缓冲区映射命令?

前端之家收集整理的这篇文章主要介绍了windows – VIM:如何根据缓冲区映射命令?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我知道我的标题不是描述性/清晰的,所以让我解释一下.

昨天我可以跨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>

猜你在找的Windows相关文章