vim на Mac OS X отображение функциональных клавиш не работает - PullRequest
6 голосов
/ 04 декабря 2011

Я недавно начал использовать систему Mac OS X Lion и пытался использовать Vim в терминале.Ранее у меня в системе Ubuntu был файл .vimrc, и ключи F2 и F5 были сопоставлены для pastetoggle и запуска интерпретатора python.Вот две строчки, которые у меня есть для этого:

set pastetoggle=<F2>
map <buffer> <F5> :wa<CR>:!/usr/bin/env python % <CR>

Он отлично работает в Ubuntu, но больше не работает в Mac.(Две вышеупомянутые строки находятся в .vimrc под моим домашним каталогом.) Я отключил определенные функции Mac в своем предпочтении, чтобы функциональные клавиши не использовались для таких вещей, как громкость.Прямо сейчас при нажатии F5 кажется, что все буквы заглавные до следующего слова, а F2 , кажется, удаляет следующую строку и вставляет O .....

Есть ли что-то еще?Мне нужно сделать, чтобы это работало как положено?

Кроме того, я использовал соляризацию в качестве своей цветовой схемы и пытался использовать ту же цветовую схему в Mac.Кажется, что команда схема читается из .vimrc, но цвета по-прежнему цвета по умолчанию.Даже если файлы .vim / colors такие же, как и раньше.Это связанная ошибка, которую мне нужно исправить?Возможно, другой файл настроек читается после моего?(Я искал _vimrc и .gvimrc, ни один не существует.)

Спасибо!

Ответы [ 4 ]

4 голосов
/ 10 октября 2012

Я наконец-то заработал свои отображения функций, прибегнув к добавлению отображений, подобных этому:

if has('mac') && ($TERM == 'xterm-256color' || $TERM == 'screen-256color')
  map <Esc>OP <F1>
  map <Esc>OQ <F2>
  map <Esc>OR <F3>
  map <Esc>OS <F4>
  map <Esc>[16~ <F5>
  map <Esc>[17~ <F6>
  map <Esc>[18~ <F7>
  map <Esc>[19~ <F8>
  map <Esc>[20~ <F9>
  map <Esc>[21~ <F10>
  map <Esc>[23~ <F11>
  map <Esc>[24~ <F12>
endif

Ответы на эти вопросы были полезны, если вам нужно проверить, соответствуют ли эти escape-последовательности вашему терминалу или установить свой собственный:

отображение функциональных клавиш в vim
Привязка специальных клавиш в качестве ярлыков vim

Вероятно, это зависит от того, как эмуляторы терминала ведут себя согласованно (смеется), но предложение @Mark Carey мне было недостаточно (хотелось бы, чтобы все было так просто).С iTerm2 на OS X я уже настроил его для xterm-256color и tmux для screen-256color, и сопоставления функций все равно не будут работать.Так что has('mac') может быть ненужным, если эти последовательности из iTerm2 совместимы с xterm, я еще не проверил, поэтому пока оставьте его в моей собственной конфигурации.

Возможно, вам также понадобятся некоторые версии imap.Обратите внимание, что вам не следует использовать noremap вариантов, поскольку вы do хотите, чтобы эти сопоставления каскадно (запускали все, что вы отобразили <Fx>).

1 голос
/ 10 мая 2012

смотри этот ответ: https://stackoverflow.com/a/10524999/210923

существенное изменение типа TERM на xterm-256color позволило мне правильно отобразить функциональные клавиши.

1 голос
/ 26 апреля 2012

Что касается вашей схемы цветов / соляризованного вопроса - убедитесь, что вы настроили Терминал (или iTerm2, который я предпочитаю) с соляризованными профилями, доступными в полном соляризованном дистрибутиве, который вы можете скачать здесь: http://ethanschoonover.com/solarized/files/solarized.zip.

Тогда единственная другая проблема, с которой вы можете столкнуться, это убедиться, что вы установили свой $ TERM xterm-256color или screen-256color, если используете screen или tmux.

Вы можете взглянуть на мои точечные файлы для рабочей настройки, но не забудьте настроить цветовые профили Terminal / iTerm в качестве первого шага.

0 голосов
/ 15 апреля 2013

Я использовал следующее в моем vimrc для копирования и вставки

if &term =~ "xterm.*"
    let &t_ti = &t_ti . "\e[?2004h"
    let &t_te = "\e[?2004l" . &t_te
    function XTermPasteBegin(ret)
        set pastetoggle=<Esc>[201~
        set paste
        return a:ret
    endfunction
    map <expr> <Esc>[200~ XTermPasteBegin("i")
    imap <expr> <Esc>[200~ XTermPasteBegin("")
    cmap <Esc>[200~ <nop>
    cmap <Esc>[201~ <nop>
endif

Я получил его отсюда https://stackoverflow.com/a/7053522

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...