2011-12-22 28 views
35

Gần đây tôi đã chuyển sang iTerm2 và yêu thích nó. Tôi tự hỏi, mặc dù có một cách để sử dụng hồ sơ để tương ứng với môi trường/máy cụ thể bạn đang ở trên.iTerm 2 profile

Giả sử tôi đang thực hiện các tác vụ trong một cửa sổ trên mac, cấu hình được hiển thị mặc định, nhưng nếu tôi ssh vào máy (cho phép nói dev0), cấu hình trên iTerm sẽ cập nhật thành hồ sơ dev0. Một khi tôi đã hoàn thành với dev0 và thoát cuộc gọi, hồ sơ sẽ chuyển sang mặc định một lần nữa.

Tôi nhận ra một công việc xung quanh là mở một hồ sơ cụ thể bất cứ khi nào tôi muốn ssh vào máy khác và có cách phân biệt, nhưng nếu kết nối được đóng, nó yêu cầu bạn chú ý dựa trên văn bản thay vì nói nền của cửa sổ.

Điều này có khả thi không? Nếu không làm thế nào có thể tính năng này được thêm vào, và có cách nào tôi có thể đóng góp?

+0

Đây là một câu hỏi hay, nhưng tôi không thực sự chắc chắn nếu điều này thuộc về Stackoverflow. – sosborn

+0

bạn nói đúng Tôi vừa tham gia cộng đồng, có cách nào để chuyển sang SuperUser không? –

+3

Có ít nhất một câu hỏi về Siêu người dùng tham chiếu câu hỏi này trong các nhận xét :) http://superuser.com/questions/1052305/mac-osx-terminal-change-background-color-on-login-to-different- Máy chủ? noredirect = 1 # comment1475057_1052305 –

Trả lời

48

iTerm2 hỗ trợ mã thoát tùy chỉnh thay đổi cấu hình khi đang di chuyển. Đặt nó trong .bashrc hoặc .bash_profile của bạn.

<esc>]50;SetProfile=X^G 

trong đó X là cấu hình. Ví dụ, để thay đổi cấu hình cho một gọi là "Foo", chúng ta này kịch bản shell:

#!/bin/bash 
echo -e "\033]50;SetProfile=Foo\a" 

Để thay đổi nó trở lại khi bạn đăng xuất, đặt mã để thay đổi cấu hình lại để mặc định trong ~/bash_logout.

+0

Chỉ cần một vấn đề với điều này cho bất cứ ai khác đọc này: nếu bạn kết thúc làm tổ phiên ssh của bạn, bạn sẽ phải tái nguồn (. ~/.bashrc) sau khi đăng xuất khỏi ssh thứ hai vào đầu tiên của bạn. Tôi thường không làm điều này nhưng phải làm nếu tôi làm việc từ xa. –

+0

Có thể đặt cấu hình mặc định như thế này không? Tôi đã thử 'SetDefaultProfile', nhưng điều đó không hiệu quả. –

+0

Chỉ tìm thấy danh sách các mã thoát này, thú vị - SetProfile không được liệt kê .. Tôi tự hỏi điều gì khác bị ẩn đi trong đó .. http://www.iterm2.com/#/section/documentation/escape_codes –

0

Tôi đã có điều ước này và thấy rằng điều này có thể được thực hiện trong iTerm 2 (Build 1.0.0.20130319) trong các tùy chọn của ứng dụng.

Bạn có thể gán một hồ sơ (nói một hồ sơ từ xa) với bộ tuỳ chọn khác nhau hơn so với mặc định của bạn cài đặt sẵn bằng cách vào:

Profiles -> Profiles Mở chọn cấu hình và nhấp vào Chỉnh sửa Profiles ... Đến Tab Màu và chọn cài đặt sẵn cho cấu hình này từ danh sách trong Tải sẵn Presets ...

Hơn nữa, tôi đã thiết lập phím tắt cho các cấu hình khác nhau để tôi có thể có cửa sổ iTerm khác với cửa sổ khác. Tôi đã làm điều này bằng cách:

  1. tạo một một hồ sơ mới trong Preferences
  2. tạo một khóa sơ Shortcut mới trong Preferences-> Phím có hành động là cửa sổ mới với hồ sơ

Hồ sơ của tôi Mặc định có nền đen nhưng đôi khi nó giúp tôi có nền trắng. Tôi nhân đôi hồ sơ Mặc định của tôi và đặt tên cho hồ sơ mới là DefaultLight. Trên hồ sơ mặc định của tôi, tôi đi đến tab Keys nơi tôi tạo một phím tắt hồ sơ mới có lối tắt bàn phím là^+ cmd + n, có hành động là Cửa sổ mới có Cấu hình và có Cấu hình là DefaultLight.

Sau khi lưu tiền tố, cmd + n mở một cửa sổ mới với nền đen và^+ cmd + n mở một cửa sổ mới với nền trắng.

Ngoài ra còn có một Tab mới có tác vụ hồ sơ trong Tùy chọn phím tắt bàn phím nếu bạn quan tâm đến việc này hơn nữa.

6

cho người dùng zsh

cho phép nói rằng bạn có 2 cấu hình, một trong những tên mac (đối với máy chính của bạn) và một cho linux (máy điều khiển từ xa)

khi vào phiên, chúng tôi cần thông báo cho zsh để tải hồ sơ của chúng tôi

  1. kết nối với điều khiển từ xa linux
  2. trong ~/.zshrc thêm echo -e "\033]50;SetProfile=linux\a"
  3. nguồn tập tin của bạn cho hiệu lực thi hành ngay lập tức: source ~/.zshrc
  4. chủ đề mới của bạn sẽ được hiển thị trong phiên iTerm.

khi thoát phiên, chúng ta cần phải nói zsh để chuyển về hồ sơ ban đầu của chúng tôi

  1. kết nối với linux từ xa
  2. trong linux ~/.zlogout thêm dòng sau
if [ "$SHLVL" = 1 ]; then 
    echo -e "\033]50;SetProfile=mac\a" 
    clear 
fi 

bây giờ bạn có thể hoán đổi các cấu hình một cách dễ dàng < 3.

nếu bạn đang sử dụng bash, tôi tin rằng các bước tương tự nhưng thay vào đó bạn sẽ sửa đổi ~/.bashrc~/.bash_logout

bản demo

demo of session based profiles in iterm2

10

Các iTerm2 mới nhất đêm (Xây dựng 2.9.20150329- hàng đêm tại thời điểm viết bài) cho phép bạn làm điều đó dễ dàng. Bạn có thể tải về nó here.

Một khi bạn đã cài đặt và mở nó ra:

  1. Đăng nhập vào máy từ xa thông qua ssh và nhấp iTerm2 (menu ứng dụng)> Cài đặt Shell Integration. Nó sẽ tải xuống một tập lệnh với curl và cài đặt nó. Làm tương tự trên máy cục bộ của bạn.
  2. Đi tới Tùy chọn>Tiểu sử.
  3. Tạo cấu hình mới cho máy cục bộ của bạn. Tùy chỉnh nó để phù hợp với nhu cầu của bạn (thay đổi màu nền, tên, vv)
  4. Chuyển đến tab Nâng cao và cuộn xuống dưới cùng.
  5. Trong Tự động chuyển hồ sơ, hãy nhấp vào '+' và thêm tên máy chủ lưu trữ của máy cục bộ của bạn.Tên máy chủ là tên bạn nhận được khi chạy echo $HOST trên máy mục tiêu. Nó không phải luôn luôn là một trong những bạn nhìn thấy trong dấu nhắc của bạn.
  6. Tạo cấu hình khác, lần này cho máy từ xa của bạn và tùy chỉnh nó.
  7. Thêm tên máy chủ của máy từ xa vào Tự động chuyển hồ sơ.
  8. Bây giờ, nếu bạn ssh vào máy từ xa, tiểu sử của bạn sẽ thay đổi và nếu bạn exit ra khỏi phiên ssh, bạn sẽ quay lại hồ sơ cục bộ của mình.

Bạn có thể kết hợp giải pháp này với @esod's answer liền mạch.
Lưu ý: nó không hoạt động cho tôi cho đến khi tôi tạo hồ sơ riêng cho máy tính để bàn thay vì sử dụng hồ sơ mặc định.

Xem the documentation để biết thêm thông tin.

+1

Câu trả lời xuất sắc, rất ngắn gọn . Vì máy tính của tôi là một máy tính làm việc, dưới tùy chọn ~ Automatic Profile Switching ~, tôi đã chọn sử dụng @ myusername so với tên máy chủ vì 'echo $ HOST trống", đó là máy tính công việc và tôi không muốn chỉnh sửa tên máy chủ của tôi. –

0

Trong trường hợp của tôi, tôi cần phải kết hợp Yohaï Berreby's answer với cài đặt máy chủ của tôi để triển khai tính năng này.

  1. Trong chuyển đổi hồ sơ tự động, hãy nhấp vào '+' và thêm tên máy chủ của máy cục bộ của bạn. Tên máy chủ là tên máy bạn nhận được khi chạy echo $ HOST trên máy đích. Nó không phải luôn luôn là một trong những bạn nhìn thấy trong dấu nhắc của bạn.

dàn máy chủ của tôi không đặt $ HOST và tên máy chủ là:

[[email protected] ~]$ hostname 
alveo-staging 

Nhưng tôi không thể thiết lập các quy tắc với hostname như alveo-staging. Bởi vì trên thực tế, alveo-dàn dựng chỉ là bí danh của tên máy chủ thực (alveo-staging.xxx), có thể được đặt trong /etc/hosts.

Vì vậy, giải pháp nhanh chóng này là sử dụng * ký tự đại diện, để đặt quy tắc là *staging*.

Sau đó, nó hoạt động.

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