Решений для этого нет, с точки зрения прохождения Ctrl-Space через терминал Bash на момент написания этой статьи (1 сентября 2016 г.), но для многих пользователей существует обходной путь: используйте PuTTY для подключения через SSH, который вызывает обработку Ctrl-Space. (В режиме tty невозможно отличить Ctrl-Space от Ctrl- @, потому что они представляют собой один и тот же символьный код, но это не должно быть проблемой, так как по умолчанию Emacs настроен для обработки команды set-mark-command
таким образом .)
- Установите сервер OpenSSH с помощью
sudo apt-get install openssh-server
. Если он уже был установлен, удалите его (sudo apt-get remove openssh-server
) и переустановите его, чтобы сбросить файлы конфигурации.
Отредактируйте файл /etc/ssh/sshd_config (с помощью sudo) следующим образом:
- Если в
PermitRootLogin
есть незакомментированная строка , закомментируйте ее. Добавить строку PermitRootLogin no
.
- Добавьте строку
AllowUsers USERNAME
, заменив USERNAME вашим именем пользователя в Linux (если вы не знаете, что это такое, запустите команду whoami
в командной строке Bash).
- В идеале вам следует настроить аутентификацию без пароля с использованием ключей SSH, но как это сделать, выходит за рамки этого вопроса (доступно множество руководств; поищите в Интернете «пароль без пароля ssh-keygen»). А пока добавьте или раскомментируйте строку
PasswordAuthentication yes
.
- Установите
UsePrivilegeSeparation no
; скорее всего, вы найдете в файле строку, в которой UsePrivilegeSeparation yes
; просто измените yes
на no
и сохраните файл /etc/ssh/sshd_config .
Если что-то пойдет не так, вы можете восстановить файл, повторив шаг # 1.
- Запустите сервер SSH с помощью команды
sudo service ssh --full-restart
.
- Используя PuTTY (скачать здесь), войдите с помощью
localhost
в поле Hostname, все остальное оставьте по умолчанию. Вам будет предложено ввести имя пользователя Linux и пароль.
- Запустите
emacs
. Ctrl-пробел установит метку по желанию.
(Обратите внимание , что описанные выше действия не сам по себе, сделать систему , способным принимать SSH соединение с других хостов. Для этого вам также придется изменить правила брандмауэра Windows, чтобы разрешить входящий TCP-порт 22.)
В другом ответе вы сказали:«но шпатлевка не является локальным терминалом». Я не уверен, что вы не знали, что вы можете использовать localhost
таким образом, или вы отказались от PuTTY из-за больших накладных расходов по сравнению с локальным терминалом. Если последнее, я бы не стал беспокоиться, интерактивный SSH-сеанс является чрезвычайно легкой нагрузкой. (Это, безусловно, намного меньше нагрузки, чем запуск системы X Window, поэтому вы можете запустить графический интерфейс Emacs или xterm!)
Единственный реальный недостаток такого способа по сравнению с прямым терминалом состоит в том, что события вставки отправляются буквенно, как если бы вы набирали содержимое буфера обмена очень быстро, что может привести к тому, что электрические пары, отступы, расширение фрагмента и т.д. Пожар. (Вставка не должна вызывать команды клавиш-аккордов, так как есть логика для обнаружения выполняющейся вставки и отключения клавиш-аккордов, пока вставка не закончится.)
И, по крайней мере, у стандартного терминала Bash есть еще одно очень большое преимущество: события мыши поддерживаются PuTTY в форме, на которую может реагировать Emacs, поэтому по иронии судьбы вы можете перемещать точку с помощью мыши в PuTTY, даже если вы можете ' т с местным терминалом.