4

(Этот вопрос размещен в группе пользователей vim_mac в Google, но я не нашел решения)

Когда вы нажимаете <K> на ключевом слове, в терминале vim он правильно выводит справочную страницу. Однако в MacVim выдает предупреждение:

WARNING: terminal is not fully functional 

В этом случае отображается последовательность управления ANSI и неправильно отображается. Скриншот можно найти здесь.

Нужна помощь, спасибо!

4 ответа4

5

Плагин ConqueTerm Vim предоставляет экземпляры Vim на основе графического интерфейса с достаточно надежной эмуляцией терминала. Требуется Vim 7.0+ (7.3+ для Windows), скомпилированный с +python или +python3 ; MacVim удовлетворяет этим требованиям.

Вот функция и привязка, которые повторно реализуют функциональность команды K нормального режима, используя ConqueTerm (вы можете поместить ее в свой .vimrc):

:function! ConqueMan()
    let cmd = &keywordprg . ' '
    if cmd ==# 'man ' || cmd ==# 'man -s '
        if v:count > 0
            let cmd .= v:count . ' '
        else
            let cmd = 'man '
        endif
    endif
    let cmd .= expand('<cword>')
    execute 'ConqueTermSplit' cmd
:endfunction
:map K :<C-U>call ConqueMan()<CR>
:ounmap K
1

Это не может быть решено без большого количества программирования, потому что, как утверждает этот поток, MacVim создает свой собственный "терминал", который не соответствует никаким элементам terminfo, следовательно, less не может справиться с его использованием должным образом. Вы можете попробовать вставить $TERM в MacVim с помощью :set term=... , но я не думаю, что есть какое-либо значение, подходящее для MacVim.

Если у вас есть графический просмотрщик страниц справки, вы можете установить его как keywordprg . Смотрите :h keywordprg для более подробной информации.

0

Попробуйте решить эту проблему, включив встроенный плагин man-страницы:

runtime ftplugin/man.vim
if has("gui_running")
    nnoremap K :<C-U>exe "Man" v:count "<C-R><C-W>"<CR>
endif
0

Если вы используете Linux, вы можете попробовать мой скрипт, просто поместите его в файл .vimrc. Перед тем, как попробовать, вы должны проверить, поддерживает ли ваш Python поддержки vim следующую команду для проверки: vim --version | grep +python

"my K
function! KyMANit()
python<<EOF
import os
import vim
import re
col=vim.current.window.cursor[1] #得到col 
line=vim.current.line
cmd_line='gnome-terminal -e "man '  #you may replace the gnome-terminal with another terminal emulator.However in Ubuntu 10.04,it's perfect

for m in re.finditer(r"\w+",line):
    if m.start()<=col and m.end()>=col:
        cmd_line+=m.group()+'"'
        os.system(cmd_line)
EOF
endfunction
map K :<C-U>call KyMANit()<CR>
ounmap K

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .