加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

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

发布时间:2020-12-14 01:46:55 所属栏目:Windows 来源:网络整理
导读:我知道我的标题不是描述性/清晰的,所以让我解释一下. 昨天我可以跨Vimgrep和copen,所以我添加了以下行.vimrc nnoremap silent,/ :execute 'vimgrep /'.@/.'/g %'CR:copenCR 它所做的是为vim中搜索(突出显示)的单词打开一个quickfix列表. 现在当您按回车 CR在
我知道我的标题不是描述性/清晰的,所以让我解释一下.

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读