我知道我的标题不是描述性/清晰的,所以让我解释一下.
昨天我可以穿过,Vimgrep and copen所以我在下面添加了以下内容.vimrc
nnoremap <silent> ,/ :execute 'vimgrep /'.@/.'/g %'<CR>:copen<CR>
Run Code Online (Sandbox Code Playgroud)
它所做的是一个开放quickfix list的searched(highlighted)vim的话.
现在,当您按下Enter<CR>quickfix列表时,它会将您带到主Vim窗口中的相应行.
现在,我遇到的问题是我已经映射了我的<CR喜欢map <CR> o<Esc>,它在当前行的正下方创建了一个新行.
所以,你可以看到两者之间存在冲突.所以,我想要的是想出一个类似的vim函数
伪代码
function IfNotInsideQuickFix()
if buffer != QuickFix
then map <CR> o<Esc>
elif buffer == QuickFix
Normal behaviour
Call function
Run Code Online (Sandbox Code Playgroud)
这是输出 :buffers
:buffers
1 #a "test.cs" line 0
2 %a- "[Quickfix List]" line 1
Press ENTER or type command to continue
Run Code Online (Sandbox Code Playgroud)
我没有编写vim函数的经验.所以,有人可以指导我.
PS:我知道我可以改变我的Vim映射来创建一个新行,但我想通过Vim函数学习如何做到这一点
Ing*_*kat 22
您可以<CR>按原样保留全局映射,但在quickfix窗口中本地可以恢复原始行为.这是通过:autocmd(在快速修复窗口打开时触发)完成的,它将(无需重新映射)<CR>(本地通过<buffer>)映射到自身.
:autocmd BufReadPost quickfix nnoremap <buffer> <CR> <CR>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2400 次 |
| 最近记录: |