Vim 7.2 зависает при запуске, "killall vim" исправляет это - PullRequest
8 голосов
/ 21 августа 2009

Я только что скомпилировал vim 7.2 на сервере Linux (в моем каталоге пользователя, поскольку на сервере был установлен vim 6, и я хотел обновить, но у меня нет привилегий root).

Когда я ввожу "vim", он зависает при запуске без какого-либо ответа, но когда я вызываю "killall vim" из другого окна ssh, запуск завершается, и после этого vim работает нормально. С чего бы это, и как я могу это исправить?

Большое спасибо за ваши ответы.

Ответы [ 5 ]

18 голосов
/ 21 августа 2009

Ну, я нашел ответ:

:help -X

показывает, что Vim пытается подключиться к серверу X11 при запуске, чтобы получить функциональность буфера обмена и другие вещи, которые могут привести к «длительному времени запуска при запуске Vim в эмуляторе терминала и медленном соединении с X-сервером»

Существует три способа решения этой проблемы:

  1. Запуск Vim с "vim -X" отключает эту связь X11
  2. Вызов "unset DISPLAY" также отключает связь X11
  3. Если Vim скомпилирован без функции "+X11", это сообщение не будет иметь место

Я выбрал "unset DISPLAY", поскольку получал другие странные сообщения об ошибках, и теперь vim запускается практически мгновенно. Я также протестировал параметр -X, который также решил проблему (даже если параметр DISPLAY все еще установлен).

5 голосов
/ 21 августа 2009

strace vim, вероятно, расскажет вам, что его висит.

2 голосов
/ 13 марта 2012

Другая распространенная причина зависания vim при запуске - это когда он пытается получить доступ к GPM (т. Е. Пользовательские шрифты и т. Д.). В моем случае у меня были те же симптомы, но в конечном итоге проблема с GPM была связана с мышью.

Помещение следующего (из: http://www.linuxquestions.org/questions/slackware-14/vim-freeze-at-startup-when-in-ssh-session-856606/) в мой .vimrc исправило проблему зависания при запуске с VIM.

" This section is bigger in my .vimrc, this is just an excerpt.
if has('gui_running')
  " Mouse on GUI comes handy.
  set mouse=a
else
  set mouse=
endif

Надеюсь, это поможет другим читателям, которые придут таким путем:)

0 голосов
/ 28 января 2016

Использование strace vim для поиска ошибки дало мне следующее:

.vim / bundle / Vundle.vim ", {st_mode = S_IFDIR | 0755, st_size = 4096, ...}) = 0 getdents (4, / * 0 записей * /, 32768) = 0 close (4) = 0 --- SIGSEGV (ошибка сегментации) @ 0 (0) ---

, поэтому удаление Vundle.vim решило проблему.

0 голосов
/ 23 марта 2013

В связи с упомянутым выше случаем зависания vim при запуске при попытке доступа к GPM, вы можете определить, так ли это, используя strace. Сначала запустите vim в одном терминале / консоли, чтобы он завис

vim

затем перейдите в другой терминал, получите PID и установите его

$> pgrep vim                        
32502

$> strace -p 32502
Process 32502 attached - interrupt to quit
connect(4, {sa_family=AF_FILE, path="/dev/gpmctl"...}, 13

Итак, у нас есть дело с GPM. Просто перезапустите службу GPM, и мы готовы идти

$> service gpm restart
Shutting down console mouse services:                      [  OK  ]
Starting console mouse services:                           [  OK  ]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...