Отправляет email-рассылки с помощью сервиса Sendsay

В vim не работает Backspace в эмуляторах терминала

Здравствуйте!

После обновления системы (но не знаю, чего конкретно), в эмулятрах терминала

в vim перестал работать Backspace - выдает "^?" . В чистой консоли все
нормально, <Ctrl-H> работает везде. Читал справку vim на предмет fixdel, но
ничего не добился, максимум - чтоб Backspace работала как Del. Пробовал
вернуть старые пакеты vim - не помогает (т.е. дело не в нем?).
Как заставить Backspace работать как положено?
Дистрибутив, если кому интересно, Fedora Core 3.

Спасибо за ответы-советы.

Ответить   9A4172 Thu, 7 Apr 2005 11:09:59 +1100 (#346831)

 

Ответы:

i386-redhat-linux-gnu)

On Thu, 7 Apr 2005 11:09:59 +1100
9A4172 <whirlewi***@f*****.ru> wrote:

но

какие терминалы опробованы?

Ответить   Thu, 7 Apr 2005 18:22:40 +0300 (#346952)

 

В сообщении от Пятница 8 Апрель 2005 02:22 alexander barakin написал(a):

konsole (именно им я и пользуюсь и собираюсь пользоваться и дальше независимо

от выкрутасов vim'а :) ), xterm, gnome-terminal - других нет.
В справке vim (help: fixdel) есть вот такое-вот:

*Linux-backspace*
Note about Linux: By default the backspace key
produces CTRL-?, which is wrong. You can fix it by
putting this line in your rc.local: >
echo "keycode 14 = BackSpace" | loadkeys

Я не совсем понимаю смысл этого (я ведь просто обновил FC2 до FC3, а раньше

все работало), но попробовал (даже перезагрузился на всякий случай),
результат - Backspace нормально заработал в xterm, но в konsole и
gnome-terminal все осталось как раньше (а хотелось бы именно konsole).
Еще в справке (там же) есть и такое:

Set the value of 't_kD':
't_kb' is 't_kD' becomes
CTRL-? CTRL-H
not CTRL-? CTRL-?
(CTRL-? is 0177 octal, 0x7f hex) {not in Vi}

Что это значит?
Ниже есть еще пример, я по нему пытался вот такое добавить в vimrc:

if &term == "konsole"
set t_kb=^H<Backspace>
endif

т.к. Ctrl-H таки работает как Backspace. Однако, не помогло, в т.ч. и с
xterm.
А еще в /etc/vimrc есть такой кусок:

if &term=="xterm"
set t_Co=8
set t_Sb=^[[4%dm
set t_Sf=^[[3%dm
endif

И его смысла я тоже не понимаю :(
В vim же можно просто назначать всякие действия на кнопки, можно назначить на

Backspace эквивалент Ctrl-H?

Вот же, вроде мелочь, но сильно раздражает :(

Ответить   9A4172 Fri, 8 Apr 2005 22:55:11 +1100 (#347416)

 

В сообщении от 1112990111 секунд после начала Эпохи Unix Вы написали:

Всего лишь?... Кажется я Вам когда давно уже говорил что систему лучше ставить
заново, а не обновлять. Вот результат. (не принимайте близко к сердцу :)
Правда я не уверен что и у меня тоже такого глюка нет с vim из FC3, так как я
использую vim собранный из src.rpm из ASPLinux 9.2.

Вот это странно. loadkeys загружает keymap для консоли, на иксы он влиять
не должен. Может Вы что-то перепутали?

The program loadkeys reads the file or files specified by filename....
Its main purpose is to load the kernel keymap for the console.

Как я понял, меняет keymap. Т.е. команда `:fixdel' меняет код клавиши
для Delete (`t_kD'). Значение которое будет присвоено `t_kD' зависит
от значения `t_kb'. Если `t_kb' равно `CTRL-?', то `t_kD' присвоится
значение `CTRL-H'. Если `t_kb' не равно `CTRL-?', то `t_kD' присвоится
значение `CTRL-?'.

Попробуйте запустить vim и выполнить такую команду:

:set t_kb=CTRL-V<BS>

Т.е. вводите обычным способом `:set t_kb=', потом нажимаете клавиши CTRL-V,
отпускаете, а потом давите Backspace, отпускаете, нажимаете на Enter.

IMHO Ctrl-H на много удобнее Backspace. В консоли (эмуляторе терминала),
в VIM в GUI режиме я вместо Enter всегда давлю CTRL-J, вместо Backspace
Ctrl-H - очень удобно.

А что тут понимать?

:help t_Co
t_Co number of colors
:help t_Sb
t_Sb set background color
:help t_Sf
t_Sf set foreground color

на

Если код клавиши, который эмулятор терминала передают в VIM при нажатии
на Backspace не опознается VIM'ом как Backspace, то никакие действия
назначить на нее не получится.

А как в GUI режиме? Backspace работает? И чем вам не нравится GUI режим?
IMHO, если настроить шрифт он намного симпатичнее чем вариант под ncurses.
Плюс мышь работает. :)

Ответить   Konstantin Korikov Sat, 9 Apr 2005 02:24:52 +0300 (#347688)

 

В сообщении от Суббота 9 Апрель 2005 10:24 Konstantin Korikov написал(a):

Дык, ёлы-палы!(С) Агроном :) Тогда ведь был переход с ASP9 на FC2, т.е.
перепрыгнул через ступеньку, а тут - с Федоры на нее же более новой версии.
Да и такого глюка тогда не возникло. Да и вон, гентушники и дебиановцы
обновляю свои системы годами - и ничего, работают.

Да, что-то я до этого не додумался... Действительно, странно. К тому же, как

уже отмечалось, в консоли в vim все работало и до, и после.

Спасибо, теперь понял.

Спасибо еще раз! Заработало! Добавил в /etc/vimrc. Но сам бы я до такого не

додумался, уж очень замудренно :) Я думал, что <Backspace> и т.д. - это
условные обозначения клавиш, тем более в примерах vimrc, насколько я понял,
они именно так и пишутся (nmap, imap и т.д.)

Ну, мне приходятся пользоваться большим количеством программ, в которых
можно редактировать введенный текст, от OpenOffice до консоли восстановления

Windows NT (друг вчера стер загрузчик своей хрюши, вот я и развлекался) :) И

во всех этих программах Backspace работает одинаково, а Ctrl-H может означать

что угодно (в т.ч. вообще ничего). А vim я в основном правлю конфиги :)
Впрочем, о вкусах не спорят.
Emacs - отличная ОС, вот только нормального редактора под него нет. (просто

к слову вспомнилось :) ).

Спасибо (еще раз :) ), разобрался.

gvim (или как там его) не установлен, так что не пробовал. Не знаю, почему,

но он мне очень не понравился - по мне, или консольный или изначально
графический, а это - ни рыба, ни мясо (сугубо личное мнение). А мышь у меня и

в простом vim работает (gpm), или вы что-то другое имеете в виду?

Ответить   9A4172 Sat, 9 Apr 2005 23:02:25 +1100 (#347963)

 

В сообщении от 1113076945 секунд после начала Эпохи Unix Вы написали:

Раз на раз не приходится. (С) не помню кто из фильма про золото :)

И

Поэтому я не пользуюсь OpenOffice, а тексты набираю при помощь LaTeX.
Весомая причина, не правда ли. :)

Э-э-э... Emacs - это ОС? Я думал что это текстовый редактор... Правда там,
говорят, столько разных функций, и он на столько гибкий, что его и вправду
можно назвать ОСью. :)

А если Вы имели в виду оффтоп, то под ним VIM тоже работает. Я бы на
месте Билла Гейтса дал бы распоряжение - в обязательном порядке
включать этот редактор во все версии Windows. Потому что приходится
иногда на чужих компьютерах, редактировать свой код, а делать это в
Notepad, как Вы сами понимаете, все равно что ходить в шлепанцах по
болоту, а в Word - все равно что переться туда на танке.

А для меня это результат удачного и гармоничного слияния мощности CLI,
визуального редактирования, и интуитивно понятного и приятного для глаз GUI.

в виду?

В GUI мышь приобретает несколько больше функциональности. Хотя лично я
ее использую только для изменения размеров частей разбитого окна
(split window). Ну, и еще иногда по менюшкам поклацать чтобы дать
разрядку глазам.

Ответить   Konstantin Korikov Sat, 9 Apr 2005 22:59:53 +0300 (#348132)

 

Ну ладно, все равно никто никого не переубедит :)
Можно в debate сделать тему vim(emacs) vs. all :)

Ответить   9A4172 Sun, 10 Apr 2005 22:49:53 +1100 (#348377)

 

В сообщении от 1112861399 секунд после начала Эпохи Unix Вы написали:

А просто в командной строке эмулятора терминала (без VIM)
Backspace работает?

Ответить   Konstantin Korikov Thu, 7 Apr 2005 17:58:18 +0300 (#347041)

 

В сообщении от Пятница 8 Апрель 2005 01:58 Konstantin Korikov написал(a):

Да, нормально работает в konsole, xterm, gnome-terminal (других нет).

Ответить   9A4172 Fri, 8 Apr 2005 22:31:55 +1100 (#347417)