Подтвердить что ты не робот

Отображение <C-Tab> в моем vimrc не удается в Ubuntu

Я хочу скопировать ctrl-tab в: tabn и ctrl-shift-tab в: tabp.

У меня была работа для gVim в Windows XP, но перенесла его в мой .vimrc в Ubuntu 9.10, и он не работает (vim 7.2).

Здесь соответствующий раздел моего .vimrc:

nmap <C-Tab> :tabn<CR>
nmap <C-S-Tab> :tabp<CR>
nmap <C-t> :tabnew<CR>

<C-t> отлично работает, поэтому сопоставление клавиш ctrl не кажется проблемой. Я действительно не знаю, с чего начать! Что здесь может быть неправильным, учитывая, что он отлично работает под Windows?

Дополнительная информация: Я запускаю сервер Ubuntu 9.10 с установками xorg и fluxbox. Я использую xterm как мой терминал.

Отображение Ctrl-tab работает в fluxbox: Я могу сопоставить ctrl-tab и ctrl-shift-tab в моем оконном менеджере; если я начну вставлять свои xterms, я могу пройти через эти вкладки, как и ожидалось. Я не уверен, что это значит, но я думаю, что проблема не является проблемой оконного менеджера /xorg.

Ключи не отображаются на что-то еще и успешно распознаются вместе.

Ответ: Это проблема xterm - она ​​не перехватывает и не отправляет уникальный код для ctrl-tab. Подробнее см. Мой полный ответ ниже.

4b9b3361

Ответ 1

Это определенно проблема с терминалом.

По-видимому, xterm и множество других эмуляторов терминала не перехватывают ctrl-tab по умолчанию и просто посылают сигнал табуляции. Эта страница Vim wiki утверждает, что ctrl-tab не работает для xterm, Eterm и aterm. Кроме того, это сообщение в форме архива linux, утверждающее, что это проблема с терминалом.

Решение можно найти, объединив информацию из этого сообщения в блоге с этим vim wiki для сопоставления кодов клавиш. Это связано с тем, что вам нужно настроить xterm для перехвата и отправки уникального кода для ctrl-tab и ctrl-shift-tab в вашем файле .Xresources, а затем взломать это в ваш .vimrc с некоторыми фанковыми сопоставлениями.

Короче говоря, это трудно сделать (до сих пор не работает), потому что xterm и vim должны быть обмануты в этом. Я лично собираюсь переехать и использовать другое картографирование... эта проблема - серьезная присоска, и я не думаю, что стоит надавить, чтобы она работала!

Спасибо за помощь ребятам.

Ответ 2

Я использовал блог и записи в вики из ответа @nfm и решил:

Поместите это в ваш файл .Xresources (вы можете скопировать-вставить в этом случае):

xterm*VT100.Translations: #override \
             Ctrl ~Shift <Key>Tab: string(0x1b) string("[27;5;9~") \n\
             Ctrl Shift <Key>Tab: string(0x1b) string("[27;6;9~")

Затем выполните cd ; xrdb .Xresources и перезапустите xterm.


Поместите это в свой .vimrc:

!! Важно. Вместо XXXX вы должны ввести CTRL-V, а затем Esc ИЛИ скопировать весь текст и запустить %s/\(set <F1[34]>=\)XXXX/\=submatch(1) . "\33"/g, который можно скопировать (вставить его с помощью <CTRL-R> +).

set timeout timeoutlen=1000 ttimeoutlen=100
set <F13>=XXXX[27;5;9~
nnoremap <F13> gt
set <F14>=XXXX[27;6;9~
nnoremap <F14> gT

И перезапустите vim.

Готово.

Ответ 3

Если вы используете Ubuntu, возможно, у вас есть что-то вроде Compiz.

Я не могу точно знать, но вы должны взглянуть на расширения Compiz и определить из них ярлык. У меня была аналогичная проблема один раз, а не с vim, но все же.

Также может быть X-сервер, который перехватывает некоторые нажатия клавиш (пример: xbindkeys).