gpt4 book ai didi

vim - 如何检查 Vim 缓冲区是否可修改?

转载 作者:行者123 更新时间:2023-12-04 22:19:31 25 4
gpt4 key购买 nike

我发现 Vim 快捷方式 nmap <enter> o<esc>nmap <enter> O<esc> ,它们用回车键插入一个空行,非常有用。然而,它们对插件造成了严重破坏;例如, ag.vim ,它用要跳转到的文件名填充 quickfix 列表。在这个窗口中按回车(应该跳转到文件)给我错误 E21: Cannot make changes; modifiable is off

为了避免在 quickfix 缓冲区中应用映射,我可以这样做:

" insert blank lines with <enter>
function! NewlineWithEnter()
if &buftype ==# 'quickfix'
execute "normal! \<CR>"
else
execute "normal! O\<esc>"
endif
endfunction
nnoremap <CR> :call NewlineWithEnter()<CR>

这有效,但我真正想要的是避免在任何不可修改的缓冲区中进行映射,而不仅仅是在 quickfix 窗口中。例如,映射在位置列表中也没有意义(并且可能会破坏使用它的其他插件)。如何检查我是否在可修改的缓冲区中?

最佳答案

使用 'modifiable' :

" insert blank lines with <enter>
function! NewlineWithEnter()
if !&modifiable
execute "normal! \<CR>"
else
execute "normal! O\<esc>"
endif
endfunction
nnoremap <CR> :call NewlineWithEnter()<CR>

关于vim - 如何检查 Vim 缓冲区是否可修改?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37211250/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com