В оболочке удара, как вставить предыдущую строку в текущей строке?

Возможности клиент-сервер vim зависьте от X11, цитирующего из его справки:

Коммуникация между клиентом и сервером проходит X-сервер. Дисплей сервера Vim должен быть указан. Обычная защита X-сервера используется, необходимо смочь открыть окно на X-сервере для коммуникации для работы.

[...]

Не Vim GUI с доступом к дисплею X11 (xterm-clipboard включенный), может также действовать как сервер команды, если имя сервера явно задано с --servername аргумент.

Это сообщение списка рассылки является более четким на том, что необходимо:

За исключением Windows, коммуникации между сервером и клиентом проходит X11, так в этом случае Вам нужны оба --with-x параметр конфигурации (или значение по умолчанию) во время компиляции (который, в свою очередь, требует, чтобы один или несколько пакетов "разработки" X11 были установлены), и доступный X-сервер во времени выполнения.

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

Править: Вам могли сойти с рук "меньше, чем gvim"путем создания vim самостоятельно (например, путем восстановления пакета Debian (упаковочный учебный PDF)) таким образом, что при тихой необходимости в X11, Вы могли обойтись без GTK и т.д.

2
20.02.2012, 12:58
3 ответа

Можно попытаться использовать Alt-^ в emacs режиме (это подобно Ctrl-Alt-e, но он должен сделать только расширение истории).

Если это не работает на Вас (например, нет никакой привязки значения по умолчанию для расширения истории в vi режиме), можно добавить привязку вручную путем размещения

bind '"\e^": history-expand-line'

где-нибудь в Вашем .bashrc, или

"\e^": history-expand-line

в Вашем .inputrc

ОБНОВЛЕНИЕ. Несколько комментариев:

  1. если все в порядке, необходимо смочь нажать Alt-^ для замены любым !! упорядочьте со своей предыдущей командой, например echo "!!" стал бы echo "previous_command with args"
  2. если это не работает, как желаемый, можно проверить привязку с bind -P | grep history-expand (это должно возвратить что-то как history-expand-line can be found on "\e^")
2
27.01.2020, 22:01
  • 1
    Это работает только, когда курсор в начале строки. Это - настоящее ограничение для меня. –   20.02.2012, 14:26
  • 2
    Это действительно не должно зависеть от позиции курсора, и это не зависит для меня. Вы говорите о emacs режиме или vi режиме? Вы добавляли привязку вручную или использовали по умолчанию? –   20.02.2012, 18:56
  • 3
    я использую vi режим. Alt-_ работы и расширяются для длительности args предыдущей команды. Но Alt-^ не делает ничего, что –   20.02.2012, 23:03
  • 4
    @YehonathanSharvit Сделал Вы пытаетесь определить пользовательскую привязку клавиш с bind '"\e^": history-expand-line'? Просто выполните эту команду в своей командной строке, и после этого необходимо смочь использовать Alt-^ расшириться !! или !$ или любой другой! - последовательности. Сообщите мне, работает ли это на Вас. –   20.02.2012, 23:12
  • 5
    Нет это не работает. (Я нахожусь на человечности 11.04) –   20.02.2012, 23:17

Это могло бы работать на Вас:

echo abc
!! 

Теперь введите Ctrl-Alt-e одновременно (или в emacs языке CME).

echo abc
1
27.01.2020, 22:01
  • 1
    Не релевантный, потому что я хотел бы, чтобы расширение произошло, прежде чем я выполню команду CME –   20.02.2012, 18:11
  • 2
    , расширяется, но не выполняется. Необходимо ввести возврат впоследствии. Я не уверен, что понимаю Ваш вопрос? Если Вы хотите видеть последнюю команду просто ввести Ctrl-p –   20.02.2012, 19:02
  • 3
    я хочу вставить предыдущую строку при редактировании текущей строки и после вставки предыдущей строки, я хочу продолжить редактировать текущую строку. –   20.02.2012, 22:58
  • 4
    @YehonathanSharvit Ctrl-Alt-e должен сделать точно, что Вы описали. Но это не работает в vi режиме, и это может расшириться больше затем, Вы хотите (это делает историю, псевдоним и расширения слова) –   20.02.2012, 23:19

Это сделало бы M-, вставьте предыдущую строку в emacs режим:

"\e,": "!!\e^"

Можно также заставить пространство развернуть указатели как !! путем привязки его с magic-space:

" ": magic-space
1
27.01.2020, 22:01

Теги

Похожие вопросы