ประวัติคำสั่งใน zsh


32

ขณะนี้ฉันได้ตั้งค่า zsh ในลักษณะที่ประวัติการแบ่งปันคำสั่งระหว่างเซสชันทั้งหมดทันที

สมมติว่าฉันมีเทอร์มินัลอีมูเลเตอร์เปิดด้วยสองแท็บแต่ละตัวมีเซสชัน zsh, A1 และ A2 หากฉันป้อนls -laใน A1 แล้วไปที่ A2 แล้วกดปุ่มลูกศรขึ้นฉันจะเห็นls -laในพรอมต์คำสั่ง

ฉันต้องการเปลี่ยนเพื่อไม่ให้เซสชันแชร์ประวัติคำสั่งซึ่งกันและกันแม้ว่าเมื่อคุณเริ่มเซสชันใหม่มันจะได้รับประวัติก่อนหน้าทั้งหมดจากเซสชันทั้งหมดก่อนหน้านี้


ฉันทำอย่างนั้นเป็นประจำ อย่างไรก็ตามมีคำถามมากมายที่ยังไม่มีคำตอบที่น่าพอใจ
ศิลปะ

คำถามที่ดีและคำตอบที่เป็นประโยชน์ ฉันคิดว่านี่เป็นสิ่งที่ iTerm2 เจาะจง หวังว่าความคิดเห็นนี้จะมีคนแบบนี้ถ้าพวกเขาทำสมมติฐานเดียวกัน
Alan H.

คำตอบ:


40

คุณอาจได้รับการINC_APPEND_HISTORYตั้งค่า

INC_APPEND_HISTORYตัวเลือกจากman zshoptions:

ตัวเลือกนี้ใช้งานได้เหมือน APPEND_HISTORY ยกเว้นว่ามีการเพิ่มบรรทัดประวัติใหม่ลงใน $ HISTFILE แบบเพิ่มขึ้น (ทันทีที่ป้อน) แทนที่จะรอจนกว่าเชลล์จะออก

ตัวเลือกที่คุณต้องการคือAPPEND_HISTORY:

APPEND_HISTORY หากมีการตั้งค่าเซสชัน zsh จะต่อท้ายรายการประวัติลงในไฟล์ประวัติแทนที่จะแทนที่ ดังนั้นเซสชัน zsh แบบขนานหลายรายการทั้งหมดจะมีรายการใหม่จากรายการประวัติของพวกเขาเพิ่มลงในไฟล์ประวัติตามลำดับที่พวกเขาออก ไฟล์จะยังคงถูกเขียนใหม่เป็นระยะเพื่อตัดแต่งเมื่อจำนวนบรรทัดเพิ่มขึ้น 20% เกินกว่าค่าที่ระบุโดย $ SAVEHIST (ดูตัวเลือก HIST SAVE BY COPY)

คุณสามารถอ่านเกี่ยวกับตัวเลือกเหล่านี้ในman zshoptions, man zshallหรือทางออนไลน์ที่นี่

ในการตั้งค่าพวกเขาใน~/.zshrcหรือที่คล้ายกันคุณควรมี:

setopt APPEND_HISTORY

โปรดทราบว่าหากคุณใช้oh-my-zshตามค่าเริ่มต้นฉันเชื่อว่าINC_APPEND_HISTORYใช้งานอยู่ ฉันไม่แน่ใจ 100% ว่าจะโหลดสิ่งoh-my-zshไหนบ้าง แต่ถ้าตัวเลือกแทนที่สิ่งที่คุณตั้งไว้~/.zshrcคุณสามารถเล่นกับมันได้~/.oh-my-zsh/lib/history.zsh


echo unsetopt INC_APPEND_HISTORY >~/.oh-my-zsh/custom/history.zsh
youfu

iTerm2 สามารถกำหนดค่าให้เรียกคืนประวัติแต่ละแท็บได้อย่างไรหลังจากรีสตาร์ท (สำหรับ zsh และ oh-my-zsh)
Googol

10

หากต้องการเพิ่มคำตอบที่ยอมรับถ้าคุณใช้oh-my-zshคุณอาจSHARE_HISTORYเปิดใช้งานตัวเลือกโดยค่าเริ่มต้น

เพื่อให้เกิดการแยกระหว่างการรันเชลล์ + ประวัติทั้งหมดรวมกันในเทอร์มินัลที่เพิ่งเปิดใหม่คุณต้องแสดงความคิดเห็นหรือลบบรรทัดต่อไปนี้:

setopt share_history # share command history data

จาก ~/.oh-my-zsh/lib/history.zsh


ในกรณีของฉันเส้นทางของไฟล์ history.zsh คือ~/.antigen/repos/https-COLON--SLASH--SLASH-github.com-SLASH-robbyrussell-SLASH-oh-my-zsh.git/lib/history.zsh
suzanshakya

3
อีกวิธีที่จะไปเกี่ยวกับมันคือการใส่หลังจากunsetopt share_historyคุณโหลด เอกสารที่นี่ .zshrcoh-my-zsh
counterbeing

ขอบคุณ @counterbeing ที่แก้ไขให้ฉัน - คุณควรทำให้เป็นคำตอบที่แยกต่างหากมันเป็นวิธีที่ง่ายที่สุดในการแก้ไข
jcollum
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.