如何限制c / c ++上的gvim手册页热键设置?

时间:2018-02-09 05:01:09

标签: vim

我发现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 ++文件?

2 个答案:

答案 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")