2015-12-16 2 views
0

Я установил пакет powershell в emacs. Я запустил powershell, используя M-x powershell. В окне powershell я могу запустить команду вроде ls и т. Д., Но я не могу выполнять сценарии powershell. Я попытался использовать cmd в качестве оболочки по умолчанию в emacs и выполнить скрипт powershell из него, как описано здесь;Сценарии запуска powershell в emacs

How to run PowerShell in CMD

но она замерзает. Точно так же, когда я пытаюсь запустить vim в powershell/cmd внутри emacs, он замерзает. Я хочу указать, что скрипты и vim отлично работают в powershell и cmd, если я запускаю их за пределами emacs.

ответ

1

В M-x powershell и M-x shell, терминал «немой» и понимает только программы, которые печати, но не программы, которые идут полноэкранное.

Таким образом, он будет работать с ls, cat и cd, но потерпит неудачу на vim, man и less. Бьюсь об заклад, ваш скрипт пытается открыть vim, нет?

Это ограничение существует по какой-либо причине: когда программа переходит в полноэкранный режим, она захватывает все входные данные клавиатуры. Итак, если вы откроете vim и введите C-x, выполнит ли она команду Emacs для C-x или команду Vim? Если вы всегда запускаете команду Emacs, это означает, что при вводе j она будет вставлять j в буфер Emacs вместо прокрутки в Vim. Vim станет непригодным. Если вы всегда запускаете команду Vim, это означает, что вы больше не можете использовать C-x C-c, чтобы выбраться из Emacs, так как команда будет поглощена Vim.

Один способ обхода - использовать M-x term. В term все нажатия клавиш отправляются в программу, поэтому вы можете открывать и использовать Vim, как обычно. Чтобы запустить команду Emacs, начните с C-c. Вы можете узнать больше об этом here. Я не уверен, что он существует в Windows.

Другое решение использовать emacsclient:

;; in init.el 
(server-start) 

# in a shell 
$ emacsclient file.txt 

Это позволит открыть файл в существующем окне Emacs. Когда вы закончите редактирование файла, нажмите C-x #, чтобы вернуться в оболочку.

+0

Нет сценария, который не пытается открыть vim. Является просто компиляция материалов, настройка некоторой переменной среды. Я думаю, что что-то не так с powershell.el. – Yogi

+0

Какое сообщение об ошибке вы получаете, когда скрипт выходит из строя? –

+0

Теперь он работает. Я использовал автозаполнение, которое не добавлялось. \ В начале пути. После того, как я добавил. \ Он работает. Однако, когда я запускаю скрипт, используя powershell -noexit "&" "D: \ build.ps1" "", он застревает как vim. Таким образом, это может быть та же причина, что и vim. – Yogi

Смежные вопросы