Zsh içindeki komut geçmişi


32

Şu anda komut geçmişi hemen tüm oturumlar arasında paylaşılacak şekilde ayarlamıştım.

Diyelim ki her biri A1 ve A2 zsh oturumu olan iki sekmeli açık bir terminal emülatörüm var. A1'e ls -la girip A2'ye gidip yukarı ok tuşuna basarsam , komut isteminde ls -la'yı göreceğim .

Bunu değiştirmek istiyorum, böylece oturumlar komut geçmişini birbirleriyle paylaşmaz, ancak yeni oturuma başladığınızda önceki tüm oturumlardan önceki tüm geçmişleri alır.


Bunu düzenli olarak yapıyorum. Ancak, hala tatmin edici bir cevabı olmayan birçok soru var.
Sanat

Harika soru ve faydalı cevaplar. Bunun özellikle bir iTerm2 olayı olduğunu düşündüm. Umarım bu yorum, aynı varsayımı yaparlarsa bu yolla birisine olur.
Alan H.

Yanıtlar:


40

Muhtemelen INC_APPEND_HISTORYayarladın.

INC_APPEND_HISTORYSeçenek, gelen man zshoptions:

Bu seçenekler APPEND_HISTORY gibi çalışır, ancak yeni tarih satırlarının kabuğun çıkmasını beklemek yerine $ HISTFILE'a (girilir girilmez) artımlı olarak eklenir.

İstediğiniz seçenek APPEND_HISTORY:

APPEND_HISTORY Bu ayarlandıysa, zsh oturumları geçmiş listelerini değiştirmek yerine geçmiş listesine ekler. Böylece, çoklu paralel zsh oturumlarının tümü geçmiş dosyalarına eklenen geçmiş listelerinden çıktıkları sırayla yeni girdilere sahip olacaktır. Dosya, satır sayısı $ SAVEHIST tarafından belirtilen değerin ötesinde% 20 büyüyünce kesmek için düzenli olarak yeniden yazılacaktır (ayrıca bkz. HIST SAVE BY COPY seçeneği).

Bu seçenekler hakkında okuyabilir man zshoptions, man zshallonline ya da burada .

Onları ayarlamak için, sizin ~/.zshrcveya benzerlerinizde:

setopt APPEND_HISTORY

Varsayılan olarak oh-my-zsh kullanıyorsanız INC_APPEND_HISTORY, kullanıldığına dikkat edin. Hangi yolların etrafına yükleneceği konusunda% 100 emin değilim, ancak oh-my-zshseçenek belirlediğiniz ayarları geçersiz ~/.zshrckılarsa, onunla uğraşabilirsiniz~/.oh-my-zsh/lib/history.zsh


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

İTerm2, yeniden başlattıktan sonra sekmelerin bireysel geçmişini geri yüklemek için nasıl yapılandırılabilir (zsh ve oh-my-zsh için)?
Googol

10

Kabul edilen cevaba eklemek için, kullanırsanız oh-my-zsh, muhtemelen SHARE_HISTORYvarsayılan olarak etkin seçeneğiniz vardır.

Yeni açılan bir terminalde çalışan mermiler + tüm geçmiş arasında bir ayrım yapmak için aşağıdaki satırı yorumlamanız veya kaldırmanız gerekir:

setopt share_history # share command history data

itibaren ~/.oh-my-zsh/lib/history.zsh


Benim durumumda, history.zsh dosyasının yolu şudur~/.antigen/repos/https-COLON--SLASH--SLASH-github.com-SLASH-robbyrussell-SLASH-oh-my-zsh.git/lib/history.zsh
suzanshakya 19:16

3
Bu konuda gitmek için başka bir yol koymaktır unsetopt share_historysizin de .zshrcsonrasÖ oh-my-zshyüklenir. Burada belgelendi .
counterbeing

benim için düzelten teşekkür @countering - ayrı bir cevap vermelisin, düzeltmenin en kolay yolu
jcollum
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.