Wrap the history number - сбросить номер истории без потери истории

304
jeremysprofile

Я показываю номер истории как часть моей подсказки, например,

{!1123}(j:~)$ ls /some/long/and/hard/to/type/path 

так что я могу сделать это позже с !1123. Мой HISTSIZEи HISTFILESIZEоба - 200, но это не мешает номеру истории ( \!в приглашении) набирать четверные цифры, потому что я использую tmux. Я хочу, чтобы мои подсказки и команды истории были короче. Есть ли способ обернуть историю, чтобы когда я нажимал на какое-то число, номер истории следующей команды был установлен равным 1 и перезаписывал только старые команды, когда я повторно использовал их номера истории? Пример:

{!1}(j:~)$ ls /first/path ... {!498}(j:~)$ ls /some/path {!499}(j:~)$ ls /some/other/path #at some target number, history number resets {!1}(j:~)$ ls /new/path #but remembers the old commands til they're overwritten {!2}(j:~)$ !498 ls /some/path #and keeps incrementing and overwriting the oldest commands {!3}(j:~)$ !1 ls /new/path 
1
* »Четырехзначные цифры, потому что я использую tmux« * Я сомневаюсь, что проблема в tmux. Когда я использую обычный bash с `HISTSIZE = 3`, я также получаю больше записей в истории. Может быть, вы найдете что-то полезное в «истории помощи». Socowi 5 лет назад 0
@Socowi, вы правы, что tmux не проблема, это то, как долго вы будете оставаться в системе во время сеанса, поскольку число будет увеличиваться независимо от HISTSIZE и HISTFILESIZE. Я просто имел в виду, что с tmux мои сессии обычно очень длинные. `история помощи '- это длинный абзац, и я его уже прочитал. Я могу очистить историю, но не могу сбросить номер истории и сохранить старые записи. jeremysprofile 5 лет назад 0
С помощью `exec bash` номера истории сбрасываются, но локальные переменные также теряются. В качестве альтернативы, вас заинтересует «решение», в котором номер истории 31415 отображается как 415? Это действительно означает, что отображается. Вы все еще должны были набрать `! 31415`, чтобы выполнить эту запись в истории. Socowi 5 лет назад 0
@Socowi, я хочу набрать только более короткую версию. Возможно ли как-то наложить псевдоним на историю, так что если бы `! 1123` был действительным,`! 123` расширился бы до этого. Это не должно быть супер-расширяемым, то есть иметь дело только с 4-значными номерами истории, а не с 5+. jeremysprofile 5 лет назад 0
Я никогда не слышал, чтобы можно было изменить способ, которым bash расширяет такие вещи, как `! 123`. Вам, вероятно, пришлось бы раскошелиться на bash, но тогда вы могли бы непосредственно внедрить обертывание в номер истории. Socowi 5 лет назад 0
@ Сокови, Иисус. Это слишком далеко. Ах хорошо. Спасибо за вашу помощь. jeremysprofile 5 лет назад 0

0 ответов на вопрос

Похожие вопросы