Вам придется переустановить почти все, поскольку вы удалили все старые файлы, включая большую часть установленной системы (то есть все, что не обновлялось недавно).
Поздравляю, это часть издевательств над новыми пользователями / администраторами Unix / Linux. Теперь вы полноправный член клуба. Всегда нужно помнить, что Unix вручает вам более чем достаточно веревки, чтобы стрелять ногами.
Вероятно, лучше всего предельно осторожно переустановить систему с нуля. Скажите, что вы не хотите форматировать раздел, содержащий локальные данные (например, / home
, возможно, другие). Сделайте резервную копию (с загрузочного / установочного носителя) всего , которое вы можете. Лучше всего было бы получить, например. внешний дисковый ящик и новый диск, установите новый диск и установите на него, а затем восстановите с (теперь внешнего) исходного диска.
Решение найдено
# For some reason home and end keys are not mapping properly.
# Home key
imap <esc>OH <esc>0i
cmap <esc>OH <home>
nmap <esc>OH 0
# End key
nmap <esc>OF $
imap <esc>OF <esc>$a
cmap <esc>OF <end>
В Solaris 10 вы, вероятно, используете xterm или gnome-terminal. Для xterm есть патч xterm # 196 и X11R6 xterm с небольшими исправлениями.
vim получает информацию о терминале из базы данных терминала. В определении xterm
отсутствует определение для домашних / конечных ключей. Вот как это выглядит в формате terminfo:
# Reconstructed via infocmp from file: /usr/share/lib/terminfo/x/xterm
xterm|vs100|xterm terminal emulator,
am, km, mir, msgr, xenl,
cols#80, it#8, lines#65,
acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[H\E[2J,
cr=\r, csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=\b,
cud=\E[%p1%dB, cud1=\n, cuf=\E[%p1%dC, cuf1=\E[C,
cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M,
ed=\E[J, el=\E[K, el1=\E[1K$<3>, enacs=\E(B\E)0,
home=\E[H, ht=\t, hts=\EH, ich=\E[%p1%d@, ich1=\E[@,
il=\E[%p1%dL, il1=\E[L, ind=\n, ka1=\EOq, ka3=\EOs,
kb2=\EOr, kbs=\b, kc1=\EOp, kc3=\EOn, kcub1=\EOD,
kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, kent=\EOM,
kf0=\E[21~, kf1=\E[11~, kf10=\EOx, kf2=\E[12~,
kf3=\E[13~, kf4=\E[14~, kf5=\E[15~, kf6=\E[17~,
kf7=\E[18~, kf8=\E[19~, kf9=\E[20~, rc=\E8, rev=\E[7m,
ri=\EM, rmacs=^O, rmkx=\E[?1l\E>, rmso=\E[m,
rmul=\E[m,
rs1=\E>\E[1;3;4;5;6l\E[?7h\E[m\E[r\E[2J\E[H, rs2=@,
sc=\E7,
sgr=\E[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;m%?%p9%t^>
sgr0=\E[m, smacs=^N, smkx=\E[?1h\E=, smso=\E[7m,
smul=\E[4m, tbc=\E[3g,
Если бы в описании терминала были ключи home / end, они были бы перечислены как khome
и kend
соответственно.
Кроме того, строка инициализации rs1
включает режим приложения для клавиш курсора (который может включать 6-клавишную клавиатуру редактирования с Home и Конец клавиш). Это заставляет их отправлять префикс escape O
.
vim ничего не знает об этой информации, поскольку он просто использует то, что может получить из базы данных терминала. Когда он видит последовательность символов , а не в базе данных терминала, он пытается интерпретировать этот символ за раз. escape-символ завершает режим вставки, но O
«открывается» (начинает вставку), и вы получаете последний символ ключа, например, H
или F
. Повторное нажатие клавиши дает один F
за нажатие (оставляя вас в режиме вставки после нажатия клавиши).
Правильным решением было бы исправить описание терминала, избегая необходимости отображать в вашем .vimrc
, например,
infocmp >foo
vi foo
....adding this line (with a leading tab character):
khome=\EOH, kend=\EOF,
sudo tic foo
Дополнительная литература: