Можете ли вы заставить vi "продвигать" экран при открытии? - PullRequest
4 голосов
/ 10 марта 2009

Я часто работаю в vi, приостанавливаю vi, запускаю что-то в cli, а затем перехожу в vi, чтобы поработать с результатами. Например, исправление ошибок, которые появлялись, когда я запускал команду cli.

Однако, когда я fg vi, vi «стирает» текущий буфер терминала, и я не вижу «последнего экрана» вывода терминала в буфере прокрутки.

Есть ли какая-то настройка в vi (или screen, я использую screen), которая бы мне тут помогла?

Я долго искал в Google без ответов. Я также понимаю, что существуют другие рабочие процессы, которые решают эту проблему, но они не идеальны (запуск изнутри vi означает отсутствие завершения оболочки и т. Д.).

Ответы [ 7 ]

8 голосов
/ 10 марта 2009

Если вы используете screen, то, безусловно, имеет смысл выполнить ваше редактирование в одном окне, а ваши компиляции - в другом, а затем просто использовать последовательности ^A[n] для переключения между выводом вашего терминала и кодом экраны?

2 голосов
/ 23 ноября 2009

В ответе на ваш вопрос в вашем комментарии к этому ответу : похоже, что это действительно переменная t_ti В вашем ~/.vimrc добавьте строку, которая говорит:

set t_ti=""

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

2 голосов
/ 11 марта 2009

Я не уверен на 100%, поможет ли это вам или нет, но vim пытается восстановить экран, найденный при запуске. Мне нравится такое поведение, и я потратил немало времени, чтобы "починить" установку vim на машине, где это не сработало.

Мне пришлось установить переменные t_ti и t_te . Я догадываюсь, что вы должны сбросить t_te.

1 голос
/ 11 марта 2009

Не знаю, поможет ли это, но: в эти дни я пользуюсь mac, но раньше я использовал NetBSD и Linux в универе. Меня всегда беспокоило, что такие программы, как less, man, vi и т. Д., Очищали экран при выходе. Я мог бы отключить его в less с помощью опции -X, но с остальными это было невозможно (буквально).

Я нашел параметр конфигурации в xterm, который решил проблему для меня. Боюсь, я не помню вариант; он был доступен через одно из меню, и я думаю, что это опция командной строки -xrw.

Очевидно, что это может быть полезно, только если вы используете xterm.

0 голосов
/ 23 ноября 2009

Это не решение, а хороший обходной путь, который я только начал использовать. Создайте следующий скрипт-обертку для vi (я поместил его в мой ~ / bin / vim-wrapper) и, возможно, назовите его чем-нибудь вроде:

alias vi='~/bin/vim-wrapper'

Содержание vim-wrapper (подробности см. в этом ответе ):

#!/bin/bash
LINES=$(tput lines)
for i in `seq 1 $LINES`; do
    echo $i
done
vim $@

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

0 голосов
/ 10 марта 2009

Изменение типа терминала на ANSI может работать:

:set term=ansi

Но я уверен, что есть некоторые негативные побочные эффекты.

0 голосов
/ 10 марта 2009

Возможно, что прокрутка экрана Ctrl + E или Ctrl + Y также может помочь. *

...