2013-08-19 5 views
2

Я использую eshell в emacs.Обработка истории Eshell (быстрая замена строк) не работает

В Баш, когда я исполню:

ls test 
^ls^ll^ 

он выполняет последнюю команду снова с Ls изменен Л.Л., как это:

ll test 

Как я могу сделать это в eshell? Когда я сделал это:

ls test 
^ls^ll^ 

или:

!!:s/ls/ll/ 

eshell дал ошибку:

Wrong type argument: stringp, 108 

Что случилось? Благодарю.

+0

Я думаю, что это ошибка в eshell. Поведение, описанное OP, для меня одинаково, используя ваниль Emacs 24.3.1. Я немного заглянул в нее, но у меня возникли проблемы с получением правильной обратной линии даже после '(setq eshell-handle-errors nil)', '(setq debug-on-error t)' и т. Д. У кого-нибудь есть идеи? –

+1

Документация eshell исторически была скудной, но eshell, похоже, был написан для обеспечения описанного выше поведения bash (см. Функцию 'eshell-history-reference'). Такие документы, как [Освоение Эшелл] (http://www.masteringemacs.org/articles/2010/12/13/complete-guide-mastering-eshell/), говорят, что быстрая замена «eshell» оказалась «глючной» (декабрь 2010 г.). –

ответ

0

eshell имеет встроенный переменные

см:

(информация "(eshell) Встроенные модули")

Это думает, что вы хотите `$ _», который относится к последнему аргументу последней команды.

Если у вас нет информации, установленного для eshell (документации), он доступен здесь:

https://github.com/nicferrier/eshell-manual