2016-04-09 15 views
11

Gần đây tôi đã cài đặt lại iTerm2 và hiện đang gặp sự cố thú vị sau khi thiết lập tích hợp Shell của iTerm.Tích hợp Shell iTerm2 và Oh Xung đột Zsh của tôi

Khi một cửa sổ terminal mới mở, mọi thứ dường như tìm đúng, cho thấy sự đúng đắn "agnoster" chủ đề từ Oh My ZSH:

working

Nếu tôi phát hành clear, bây giờ cửa sổ terminal của tôi trông như thế này :

not working

tôi có thể trở lại điều cần tình trạng ban đầu bằng cách tìm nguồn cung ứng ~/.zshrc một lần nữa, nhưng tôi thực sự tò mò về vấn đề gốc và nếu có cách nào để khắc phục.

Tôi đã thử ẩn điểm đánh dấu trong cài đặt của iTerm, nhưng điều đó chỉ dẫn đến thiết bị đầu cuối trống.

Trong lần cài đặt trước (trước khi tôi xóa sạch máy Mac này), tôi đã tích hợp cả My ZSH và Shell Integration, mặc dù nó trông có vẻ không ổn định, nhưng dường như vẫn giữ chủ đề Oh My ZSH bất kể thanh toán bù trừ thiết bị đầu cuối hoặc phát hành bất kỳ lệnh nào khác.

Có ai có bất kỳ ý tưởng nào về điều này không? Tôi đã kiểm tra các thiết lập iTerm hơn và hơn, nhưng dường như không thể tìm thấy bất cứ điều gì có liên quan.

+0

Có sự cố trên [gitlab] (https://gitlab.com/gnachman/iterm2/issues/4327). Có lẽ nó có thể giúp bạn. – NaN

+0

@NaN - Cảm ơn, đây có vẻ là vấn đề! Tôi đã có thể sử dụng giải pháp dưới đây và bây giờ mọi thứ đang hoạt động hoàn hảo. :) – Will

Trả lời

9

Tôi vừa cài đặt tích hợp Shell trong iTerm 2 (Phiên bản 2.9.20160313) và có cùng sự cố tương tự.

Con đường tôi giải quyết nó bằng cách thêm một dòng duy nhất để ~/.iterm2_shell_integration.zsh ngay sau khi export ITERM_SHELL_INTEGRATION_INSTALLED=Yes tại dòng 3:

ITERM2_PRECMD_PS1="$PS1"

Như vậy, đây là làm thế nào người đứng đầu của tập tin nêu trên trông:

if [[ -o login ]]; then 
    if [ "$TERM" != "screen" -a "$ITERM_SHELL_INTEGRATION_INSTALLED" = "" ]; then 
    export ITERM_SHELL_INTEGRATION_INSTALLED=Yes 

    ## BEGIN EDIT 
    ITERM2_PRECMD_PS1="$PS1" 
    ## END EDIT 

    # Indicates start of command output. Runs just before command executes. 
    iterm2_before_cmd_executes() { 
     printf "\033]133;C;\007" 
    } 

    # ... 

Nó có thể là một lỗi, vì (như bạn có thể nhìn thấy từ các ý kiến ​​trong cùng một tập tin) kịch bản được cho là để lưu $PS1 của bạn trên đăng nhập, nhưng nó không.

+1

Điều này hoạt động giống như một sự quyến rũ! Cảm ơn bạn đã phản hồi nhanh chóng. Bây giờ tôi có thể làm việc! :) – Will

+2

Tôi cũng bình luận dòng 4: 'ITERM2_SHOULD_DECORATE_PROMPT =" 1 "' –

9

Trả lời muộn nhưng điều này có hiệu quả đối với tôi.

Trang Tích hợp Shell iTerm2 có bạn tải xuống tập lệnh cài đặt và đưa nó vào bash.

Thay vào đó, hãy tải xuống cục bộ và sửa đổi nó để biết bạn đang sử dụng ZSH.

Trước tiên, tải các tập lệnh

wget https://iterm2.com/misc/install_shell_integration.sh 

Sau đó, thay vì có kịch bản xác định vỏ chỉ định nghĩa nó là "zsh"

# comment out this line 
# SHELL=$(echo "${SHELL}" | tr/"\n" | tail -1) 

# replace it with this line 
SHELL="zsh" 

Tiếp theo, hãy cài đặt kịch bản thực thi và sau đó chạy it

chmod +x install_shell_integration.sh 
./install_shell_integration.sh 

Sau đó tích hợp phải được cài đặt đúng cách.

Lưu ý Xóa tích hợp Bash nếu bạn không cần.

rm ~/.iterm2_shell_integration.bash 
+2

Cảm ơn điều này đã làm việc cho tôi. Vấn đề là: mặc dù tôi đã sử dụng zsh vì một lý do nào đó bởi biến SHELL là bash! hardcoding nó để zsh đã làm các trick! – Geek

+0

Điều này không còn cần thiết vì lỗi đã được sửa. Dù sao nó vẫn cho thấy cách cài đặt tích hợp. – noun

Các vấn đề liên quan