2009-03-22 35 views
14

thể trùng lặp:
How to run a terminal inside of vim?Làm thế nào để một cửa sổ VIM đầy trên thiết bị đầu cuối?

tôi có thể thiết lập không gian làm việc của tôi độc đáo với chia và vsplit và cởi mở ... nhưng tôi sẽ như chỉ cần sử dụng một trong những chia rẽ như một thiết bị đầu cuối cửa sổ. Tôi biết mở một xterm thêm và đặt nó chiến lược có thể thực hiện điều này nhưng nhiều lần tôi được telneted vào một cửa sổ duy nhất và bàn tay của tôi đang bắt đầu làm tổn thương từ alt tabbing giữa các thiết bị đầu cuối.

Cập nhật: Điều tốt nhất tôi đưa ra dựa trên các đề xuất bên dưới là sử dụng màn hình và thực sự có vim chiếm một trong các cửa sổ của nó.

+0

Tôi nghĩ bạn nên thử ConqueTerm. https://github.com/rson/vim-conque Màn hình tuyệt vời nhưng ConqueTerm được triển khai thực sự tốt. (theo ý kiến ​​của tôi) –

Trả lời

13

Cân nhắc chạy Vim và vỏ cùng nhau trong GNU Screen. Các Vim wiki có thông tin về tích hợp Vim và màn hình. Màn hình hỗ trợ tách thành "cửa sổ" tương tự như của Vim. Xem here để biết ví dụ về tích hợp màn hình Vim + chặt hơn. Có một bộ đệm Vim được gắn trực tiếp vào một ứng dụng dòng lệnh tương tác bên ngoài là một tính năng mà nhiều người muốn trong một thời gian dài, nhưng dường như hơi khó làm, do cách Vim được triển khai, và các nhà phát triển Vim miễn cưỡng để thay đổi điều này (vì lý do chính đáng).

Nhưng đã có một vài câu chuyện thành công. Đặc biệt, cộng đồng Lisp đã cố gắng tái tạo SLIME của Emacs (một lời nhắc Lisp tương tác) trong Vim. Xem các ví dụ VimClojureLimp. Một trong số đó có thể được thay đổi để chạy vỏ, nhưng nó sẽ mất một số công việc.

-3

Bạn sẽ phải từ bỏ điều này tôi sợ - không có cách nào để làm điều đó trong vim.

+0

hoàn toàn không đúng sự thật :-) –

+0

Mỗi trong số 5 câu trả lời khác đều đưa ra các giải pháp hợp lý. – respectTheCode

3

Nếu bạn đang ở trong vim, bạn có thể thoát ra một trình bao nhỏ bằng lệnh ": sh" và sau đó quay lại vim bằng "thoát". Hoặc bạn chỉ có thể tạm dừng vim và quay trở lại shell ban đầu mà bạn đã bắt đầu từ control-Z, sau đó quay lại vim với "fg" (foreground).

Hoặc có một tiện ích mở rộng "vim-shell" mà bạn có thể cài đặt.

2

Mở rộng trên Brian Carper's answer, bạn có thể ném vào này của bạn ~/.screenrc:

startup_message off 
# Launch 2 screens on startup 
split 
# Have bash login so $PATH will be updated 
screen -t Vim bash -l -c 'vim' 0 
focus 
screen -t canvas bash -l 
# switch focus back to vim 
focus up 

Sau đó, khi bạn gõ screen, bạn sẽ có một cửa sổ Vim trên đầu trang và một cửa sổ bash ở phía dưới. Bạn có thể chuyển đổi giữa các cửa sổ màn hình với <C-a><Tab>.

8

Bản vá vimshell giống như những gì bạn đang tìm kiếm.

+0

Đã thử nhưng không quá lớn. Nó không hỗ trợ các gói không ncurses. –

+0

Liên kết đã chết ngay bây giờ, nó chuyển hướng đến một trang chỉ mục trên cùng một tên miền. – SidOfc

14

tôi sử dụng: http://code.google.com/p/conque/wiki/Usage

Bạn có thể gõ: chia mới và: ConqueTerm bash. Và bạn có một cửa sổ thiết bị đầu cuối đang hoạt động. :)

+0

Đây là giải pháp chính xác cuối cùng tôi đã hài lòng. Tôi đã thử giải pháp màn hình, giải pháp vimshell; nhưng sở thích cá nhân cuối cùng của tôi là ConqueTerm. –

2
+1

Điều này rất hữu ích! Một điều mà tôi không biết làm thế nào để làm (nhìn vào ảnh chụp màn hình của bạn bạn đang làm nó nhưng với Python thay vì Ruby) là tôi muốn chạy bộ thử nghiệm của tôi bằng cách sử dụng một tiện ích hiện có khi tôi lưu một tập tin. Nó hoạt động, nhưng nếu tôi không ở chế độ INSERT MODE trong cửa sổ đó, nó sẽ không viết STDOUT của tiện ích vào bộ đệm, vì vậy tôi phải vào cửa sổ đó mỗi lần và nhấn 'i' để xem thông số nào thất bại . Bạn có biết một cách để có được cửa sổ để luôn luôn viết STDOUT của tiện ích vào bộ đệm ngay cả khi không có trong chế độ INSERT MODE? Chúc mừng! –

+1

Tôi chỉ tìm thấy 'let g: ConqueTerm_ReadUnfocused = 1' chỉ làm như vậy. Thật không may nó nói rằng do một số hạn chế kịch bản với VIM, nó sẽ không cho phép di chuyển với Window trong trạng thái không tập trung. Quá tệ. : / –

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