我发现gvim 8.0无法按'K'热键在我的环境中正确显示手册页。 gvim是在linux端推出的。我使用'ssh -X'将gvim屏幕重定向到我的本地Windows VcXorg屏幕。
我发现当我在main.c的一个单词上按“K”时(例如memset),它会在屏幕上显示丑陋的ANSI代码。
我试图破解〜/ .vimrc,如下所示
if has("gui_running")
nnoremap K :<C-U>! man v:count "<C-R><C-W>" \| col -b \| gview -c 'set ft=man nomod nolist' -<CR>
endif
当我在〜/ .vimrc上按'K'时,会导致错误的行为。 所以,我想知道是否有可能限制这个热键仅适用于c / c ++文件?
答案 0 :(得分:1)
因此,此命令为您提供了与GVim的“哑”终端模拟器兼容的基本非样式man
体验:
$ man foobar | col -b
你可以在Vim中使用它一点点Vimscript:
" executes the command above with the right argument at the right place
function! DumbKeywordPrg(argument) abort
execute "!man " . a:argument . " | col -b"
endfunction
" :DumbKeywordPrg foobar calls DumbKeywordPrg('foobar')
command! -nargs=1 DumbKeywordPrg :call DumbKeywordPrg(<q-args>)
" tell Vim to use :DumbKeywordPrg as 'keywordprg'
" this works like doing :DumbkeywordPrg foobar with the cursor on foobar
set keywordprg=:DumbKeywordPrg
现在,要仅为C / C ++启用该功能,您可以选择两种方法:
在vimrc
中使用自动命令:
augroup cfamily
autocmd!
autocmd FileType c,cpp setlocal keywordprg=:DumbKeywordPrg
augroup END
使用正确的ftplugin:
after/ftplugin/c.vim
中的(将来自C 和 C ++):
setlocal keywordprg=:DumbKeywordPrg
答案 1 :(得分:0)
是否可以限制此热键仅适用于c / c ++文件?
是的,您可以通过将if语句修改为:
来实现if has("gui_running") && (&ft=="c" || &ft=="cpp")