দাবি অস্বীকার: আমি এসহেল ব্যবহার করি না, তাই এটি একটি লবণের দানা দিয়ে নিন।
eshell
eshell-write-history
ইতিহাস লিখতে কল হিসাবে উপস্থিত হয় , যা একটি alচ্ছিক যুক্তি গ্রহণ করে append
যা ডিফল্ট হয় nil
। এই যুক্তিটি eshell
বর্তমানে অব্যবহৃত বলে মনে হচ্ছে তবে এটি কাজ করে না বলে মনে হয় (এটি যুক্তিটি দিয়ে যায় write-region
যা সঠিকভাবে সংযোজন করে)।
এখানে বেশ কয়েকটি বিকল্প রয়েছে।
(setq eshell-save-history-on-exit nil)
এবং eshell-write-history
নিজেকে কল করুন
eshell-write-history
আপনার প্রয়োজন মেটাতে পুনরায় সংজ্ঞা দিন ।
ব্যক্তিগতভাবে, আমি 1 সঙ্গে যেতে হবে।
উদাহরণ হিসাবে:
(setq eshell-save-history-on-exit nil)
(defun eshell-append-history ()
"Call `eshell-write-history' with the `append' parameter set to `t'."
(when eshell-history-ring
(let ((newest-cmd-ring (make-ring 1)))
(ring-insert newest-cmd-ring (car (ring-elements eshell-history-ring)))
(let ((eshell-history-ring newest-cmd-ring))
(eshell-write-history eshell-history-file-name t)))))
(add-hook eshell-pre-command-hook #'eshell-append-history)
সংশোধন, eshell-append-history
কার্যকারী ফাংশনের জন্য @ জোসেফ-গারভিনকে ধন্যবাদ
এটি নতুন ইতিহাসের বিষয়বস্তুগুলিকে একটি শেলের মধ্যে গতিশীলভাবে লোড করতে পারে না (যেমন X
শেল এ-তে রান কমান্ড , এবং শেল বিতে পুনরায় লোড না করে ইতিহাসে প্রদর্শিত হচ্ছে; zsh এর SHARE_HISTORY এর মতো)। আমি জানি না কতটা দক্ষ eshell-read-history
, তাই আমি এটিকে একটি হুকের মধ্যে চালাতে দ্বিধা বোধ করব।
এটিও সম্ভব যে আপনি এই eshell-append-history
ফাংশনটির সাথে সদৃশ এন্ট্রি দিয়ে শেষ করবেন । আপনার সাম্প্রতিকতম এন্ট্রি ছাড়া ক্লিয়ারিংয়ের সাথে কিছু শেননিগান করার প্রয়োজন হতে পারে eshell-history-ring
, তারপরে ইতিহাস লেখার পরে এটি পুরানো মানটিতে পুনরায় সেট করে।
যেমন
(let ((old-ring (copy-list eshell-history-ring)))
(setq eshell-history-ring (list (car eshell-history-ring)))
; write
(setq eshell-history-ring old-ring))