Я пытаюсь выполнить привязку Shift-Enter
для вставки новой строки без оценки текущего выражения в терминале и в режимах repl. ЧитаяАрхВики, я попробовал установить это в своем ~/.Xmodmap
файле и перезагрузить ~/.Xmodmap
с помощью xmodmap ~/.Xmodmap
. Однако это не работает. Вот моя подробная настройка:
содержание:
~/.Xmodmap:
keysym Return = Return Linefeed
~/.Xmodmap
автоматически выделяется при входе в систему путем установки:
if [ -s ~/.Xmodmap ]; then
xmodmap ~/.Xmodmap
fi
в моем ~/.xinitrc
.
Дополнительная информация:
(1) Я включил режим редактирования vi в моем ~/.bashrc
и моем ~/.inputrc
. Однако, при отключении этих опций результаты не отличались.
(2) keysym Return = Return Linefeed
Было предложено использоватьздесь.* Другие методы тоже не сработали.
(3) Мой $TERM
установлен на xterm-256color
.
Спасибо за любую помощь!
*Обновление: Решение, предложенное на этой странице (если его еще предстоит найти), не может работать в конкретном случае, обсуждаемом там, поскольку язык программирования использует собственную реализацию repl. Так что это не имеет никакого отношения к рассматриваемому случаю.
решение1
Самый простой ответ — набрать Ctrl+ V Ctrl+ J.
Привязка Shift+ Returnк Linefeed
заставляет его отправлять ^J
= control-J = \n
= \012
(вместо ^M
= \r
= \015
). Это только часть того, что вам нужно сделать: по умолчанию обе клавиши привязаны к выполнению текущей строки в bash. Вам нужно изменить привязку для ^J в вашем, .inputrc
чтобы вставить буквальный ( ^V
= \026
) символ новой строки:
"\n": self-insert
В качестве альтернативы, привяжите ключ в вашем .bashrc
:
bind -m vi-command '"\n": self-insert'
bind -m vi-insert '"\n": self-insert'
Изменение Shift+ Returnна Linefeed
может иметь нежелательные побочные эффекты — часто бывает полезно иметь эквивалент Shift+ , чтобы можно было быстро печатать, даже когда он нажат. Я бы рекомендовал вместо этого изменить + на вставку перевода строки в XTerm. Вы можете сделать это в вашем (или там, где вы размещаете свои ресурсы X):ReturnReturnReturnShiftCtrlReturn~/.Xresources
XTerm.vt100.translations: #override Ctrl<Key>Return: string("\012")