2015-02-26 15 views
5

Khi tôi chạy Vim từ bên trong phiên tmux và sao chép một số văn bản vào khay nhớ tạm, mỗi dòng được đệm với khoảng trắng ở bên phải.Văn bản được sao chép từ vim bên trong phiên tmux được đệm bằng dấu cách bên phải

Ví dụ, nói rằng tôi có một file văn bản như thế này:

^some$ 
^text$ 

Note: Tôi đã sử dụng ^$ để đánh dấu sự khởi đầu và kết thúc của một dòng tương ứng. Chúng là không phải là một phần của nội dung tệp.

Tôi bắt đầu tmux và mở tệp này trong Vim. Tôi nhấn Shift (để ngăn Vim không cho xử lý nhấp chuột) và đánh dấu văn bản hoàn chỉnh bằng cách giữ nút chuột trái được nhấp. Sau đó, tôi sao chép nó vào khay nhớ tạm với Shift + Ctrl + c.

Kết quả trong clipboard là một cái gì đó như:

^some             $ 
^text             $ 

Lưu ý thêm dấu cách. Số lượng không gian phụ thuộc vào chiều rộng thiết bị đầu cuối.

Nếu tôi khởi động Vim mà không có tmux hoặc nếu tôi chỉ cat nội dung tệp và sau đó sao chép nó, không còn chỗ trống. Vì vậy, nó phải có để làm với sự kết hợp của Vim + tmux. Tôi đã thấy điều này trên các hương vị Linux khác nhau, tức là trên Ubuntu và Mint. Tôi sử dụng thiết bị đầu cuối mặc định (Gnome Terminal 3.6.2) ở đó.

Vậy làm cách nào để ngăn chặn điều này?

EDIT: My tmux.conf

set-option -g prefix C-a 
set-option -g mouse-utf8 off 

set-option -g status-keys vi 
set-window-option -g mode-keys vi 
set-window-option -g mode-mouse on 
set-option -g terminal-overrides 'xterm*:[email protected]:[email protected]' 

bind-key C-a last-window 
bind-key C-h select-pane -L 
bind-key C-l select-pane -R 

# colors: 
set-option -g status-bg black 
set-option -g status-fg white 
set-option -g status-left '#[fg=green]#H' 
set-window-option -g window-status-current-bg red 

EDIT 2: Tôi cũng đã cố gắng mà không có sự trên .tmux.conf, sử dụng các thiết lập mặc định tmux' - không có sự khác biệt.

+1

Bạn không thể chỉ chọn văn bản trong chế độ hình ảnh và làm '" + y'? Yanks văn bản đã chọn vào khay nhớ tạm thời của hệ thống – EvergreenTree

+0

Cảm ơn, tôi không biết điều này là có thể. Nhưng nó sẽ không hoạt động nếu bạn –

+2

Tôi có thể thêm vào các khoảng trống vì khi bạn chọn nhiều dòng, nó sẽ chọn trên tất cả các cột trên màn hình thiết bị đầu cuối, vì vậy nó sẽ bổ sung thêm các khoảng trắng – EvergreenTree

Trả lời

2

Emm, tôi tìm thấy một workaround, để thay đổi HẠN để xterm từ màn hình:

HẠN = xterm vim

hoặc sử dụng dưới đây trong ~/.tmux.conf

đặt -g mặc định-terminal "xterm"

Tôi đã thử nghiệm ở trên n shell cục bộ của thiết bị đầu cuối GNOME và vỏ từ xa của SecureCRT. Nếu điều này vẫn không hoạt động, có thể bạn có thể kiểm tra xem bạn không có "set t_ut =" trong ~/.vimrc hoặc các cài đặt chung khác, vì tôi tìm thấy giải pháp này.

nhưng trong "Người đàn ông tmux", nó nói

"Các biến môi trường TERM phải được thiết lập để‘màn hình’cho tất cả các chương trình chạy bên tmux. Cửa sổ mới sẽ tự động có‘TERM = màn hình’thêm vào môi trường của họ, nhưng phải cẩn thận để không đặt lại nó trong các tệp khởi động shell."

" Đặt nhà ga mặc định cho các cửa sổ mới được tạo ra trong phiên này - giá trị mặc định của biến môi trường TERM. Đối với tmux để làm việc một cách chính xác, điều này phải được đặt thành 'màn hình' hoặc một dẫn xuất của nó."

Tôi không biết tác dụng phụ của điều này.

+0

Cảm ơn, điều này thực sự thực sự hoạt động. Nhưng bây giờ tôi có vấn đề với chủ đề màu sắc của Vim. Ví dụ, màu nền bây giờ cũng dừng ở cuối dòng. Vì vậy, tôi nghĩ, có một lý do tại sao trang người đàn ông yêu cầu 'TERM' được đặt thành' màn hình'. Nhưng dù gì cũng cảm ơn! Ít nhất một cái gì đó để chơi xung quanh với. –

+0

Vì vậy, tránh sử dụng màu backgrouod là một thủ thuật khác: P – alfred

2

Sau khi điều tra tôi càng tìm thấy thư mục gốc của . vấn đề Đó là vì tmux không hỗ trợ tính năng bce Từ xterm FAQ:.

Thuật ngữ "TCN" là viết tắt của "erase màu trở lại" Terminals như xterm hiện đại và rxvt thực hiện lại xóa màu, những người khác như vậy. như dtterm không. (Khoảng một nửa giả lập mà tôi biết về triển khai bce). khi xóa màn hình, thiết bị đầu cuối thực hiện xóa màu sau sẽ giữ lại màu nền được thiết lập cuối cùng. Một thiết bị đầu cuối không thực hiện xóa màu trở lại sẽ đặt lại màu nền thành màu mặc định hoặc ban đầu. Các ứng dụng vẽ hầu hết màn hình trong một màu đơn giản sẽ hiệu quả hơn trên các thiết bị đầu cuối hỗ trợ xóa màu sau. Chắc chắn, có sự cân bằng và các vấn đề với tiêu chuẩn hóa tính năng như đã nêu trong các câu hỏi thường gặp về ncurses. Không ngạc nhiên, ncurses hỗ trợ hành vi của xterm.

Bộ ghép kênh gốc screen có tính năng này. Tôi đã mở một số feature request issue, nhưng tiếc là họ đã từ chối triển khai. Sự thật là: Không có giải pháp với tmux.

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