Там нет решения для этого, с точки зрения создания 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
и сохранить / / 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, даже если вы можете ' т с местным терминалом.
При запуске
showkey -a
в консоли windows / ubuntu-bash он показывает, что ctrl + space просто отправляет простое пространство.И это та же проблема с сессией ssh на любой другой машине с Linux. Ctrl + space отправляется как обычное пространство.
То же самое происходит с любым другим терминалом на основе Windows (conemu, consolez, MobaXTerm) - за исключением того, что putty может справиться с этим хорошо, но putty не является локальным терминалом.
Я думаю, что терминалы Windows не имеют сопоставлений для некоторых последовательностей. Та же проблема с другими комбинациями, такими как ctrl + 1, ctrl + 2 и т. Д. Здесь требуется терминал, который может обрабатывать раскладки клавиатуры для себя, например, для замазки.
Я считаю, что эта проблема должна быть исправлена в будущих выпусках терминала Windows Bash.
источник
set-mark-command
это, пожалуй, наиболее часто используемая команда в Emacs (помимоself-insert-command
), переподготовка пальцев для этого - действительно очень сложная задача, особенно если вы использовали Emacs уже более 25 лет, как я.Этот проект позволяет использовать MinTTY в качестве альтернативного терминала: https://github.com/mintty/wsltty . Он получен из PuTTY, но не требует SSH. И как PuTTY, он прекрасно обрабатывает Ctrl-пробел.
источник
Эта проблема теперь исправлена в Windows 10 build 14965 . Проверьте:
И установите обновления, если у вас их нет!
источник
Есть взлом, так как мы можем установить X Server для Windows
1 первая установка xming для windows
2 начало xming
3 тогда из windows bash установить
4 затем откройте
cmd.exe
и запуститетеперь мы в консоли bash и запускаем
5 На этом этапе мы уже должны увидеть новый терминал в Синмин. И мы можем запустить Emacs в режиме терминала.
И все привязки теперь работают просто отлично
соответствующее обсуждение здесь https://github.com/Microsoft/BashOnWindows/issues/531
источник
-nw
заставляет его работать в терминале, так же, как и в PuTTY, за исключением того, что теперь вам приходится запускать всю вторую оконную систему - из Мой быстрый тест, это обойдется вам почти в 500 МБ памяти, помимо запуска sshd и PuTTY, и будет стоить столько же ресурсов процессора.