Как создать новый файл, соответствующий существующему файлу в Emacs Prelude?

В Emacs Prelude я не могу понять, как создать новый файл, когда существует файл, имя которого «соответствует» этому файлу.

В примере снимка экрана я пытаюсь создать файл с именем spawn.exs в каталоге, который уже содержит файл с именем spawn_basic.exs. Когда я использую C-xC-f для создания нового файла, emacs сопоставляет spawn.exs с spawn_basic.exs и нажатие Enter приводит к открытию spawn_basic.exs вместо создания spawn.exs.

введите здесь описание изображения

Я пробовал некоторые обходные пути (например, используя touch для создания файла), но я ищу более простое решение, для которого потребуется только одна команда. Если для этого нет команды, есть ли способ отключить функцию сопоставления имен файлов в Prelude? Больше всего в Prelude мне нравится все остальное по сравнению с ванильным Emacs, поэтому я бы предпочел не переключаться обратно.


person kcdragon    schedule 16.02.2017    source источник


Ответы (1)


В Prelude C-x C-f привязан к helm-find-files. Обычно это здорово, но в этом случае я не вижу хорошего обходного пути для обхода его совпадения (как вы описали).

Тем не менее, ido-find-file имеет такую ​​же удобную систему завершения, но предлагает хорошее решение для обхода завершения. Когда вы набираете spawn.exs, открывайте, нажимая C-j вместо RET. Я думаю, что Helm тоже должен сделать это (вместо того, чтобы относиться к ним одинаково), поэтому вы можете отправить запрос на добавление функции (чтобы соответствовать «дословной записи» Ido).

Ido хорошо работает как замена find-file, и его рекомендуется использовать вместо Helm для простых случаев, подобных этому в Освоение Emacs. Таким образом, вы можете переназначить его с помощью:

(global-set-key (kbd "C-x C-f") 'ido-find-file)
person Micah Elliott    schedule 16.02.2017
comment
Я попробовал ваше предложение во втором абзаце, и использование C-j вместо RET сработало! Таким образом, кажется, что helm-find-files действительно учитывает C-j для дословной записи. Спасибо за Ваш ответ! - person kcdragon; 17.02.2017