6

Я использую Emacs для работы на Linux, Windows, OSX и все в порядке, за исключением одной раздражающей проблемы с буферами оболочки под Windows.

Автозаполнение имен файлов будет работать отлично (лучше, чем стандартные окна), но совершенно бесполезно, поскольку генерирует пути с разделителем косой черты для каталогов. Это с окнами не работает, поэтому я вынужден избегать табуляции и вводить все в командной строке, или я должен отказаться от emacs и использовать разбитое окно команд Windows (где, например, трудно даже скопировать '). n вставьте разумно из-за проблем линии разделения).

Есть ли способ сказать Emacs использовать "\" вместо "/" для завершения пути для Windows?

2 ответа2

4

Краткий ответ: используйте переменную comint-completion-addsuffix .

Более длинный ответ: поиск в Google для "окон завершения оболочки emacs" привел меня к http://www.gnu.org/software/emacs/windows/Sub_002dprocesses.html, в котором говорится, что переменная comint-completion-addsuffix контролирует символы завершения. Установка на минусы \ и SPACE делает то, что вы хотите. Вы можете сделать это с

  1. Mx настраиваемая переменная RET comint-завершение-добавление RET
  2. выберите меню значения
  3. выберите суффикс пару
  4. введите \ после суффикса каталога:
  5. введите пробел после суффикса файла:
  6. выберите Сохранить для будущих сессий (или Сохранить для текущей сессии)

Делая это добавляет строку

'(comint-completion-addsuffix (quote ("\\" . " ")))

в правильное место в вашем файле ~/.emacs.

(Проверено с Emacs 22.3.)

Обновить:

Я вижу, что вы имеете в виду в своем комментарии, что в Emacs 23.3 начальная обратная косая черта меняется на косую черту. comint-dynamic-complete-filename была повреждена, поэтому часть описания, except that it won't change parts of the filename already entered in the buffer , больше не верна.

Замена 23,3 lisp/comint.el на 22,3, кажется, работает. Так же, как и замена трех строк этого файла, начиная со строки 3062:

     (delete-region filename-beg filename-end)
     (if filedir (insert (comint-quote-filename filedir)))
     (insert (comint-quote-filename (directory-file-name completion)))

с этими строками (из 22.3):

     (insert (comint-quote-filename
          (substring (directory-file-name completion)
             (length filenondir))))

и делает M-x byte-recompile-directory .

0

(setq comint-completion-addsuffix (quote ("\\" . " "))) в моих ~\.emacs мне.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .