Làm cách nào để mở Shell bên trong Vim Window?


111

Tôi có thể mở một trình bao bằng cách sử dụng lệnh: shell trong Vim, tuy nhiên tôi không thể chỉnh sửa tệp và đồng thời sử dụng trình bao.

Có cách nào để chia Vim trong nhiều Windows (hoặc tab) và mở một trình bao trong một trong số chúng không?


1
Đã từng có một bản vá vỏ ngoài đó cho vim nhưng nó không biên dịch nữa afaik. Cách gần nhất bạn có thể tiếp cận với một shell thực sự là sử dụng màn hình hoặc tmux. Đây là điều lớn nhất tôi nhớ ở vim.
Randy Morris

2
Trông giống như một bản sao của stackoverflow.com/questions/1236563/...
Brad Cupit

Câu trả lời:


85

Neovim và Vim 8.2hỗ trợ điều này thông qua :ter[minal]lệnh.

Xem terminal-windowtrong tài liệu để biết chi tiết.


5
Đây phải là giải pháp được chấp nhận cho vim> = 8.0.
amath

3
Làm thế nào để chia thiết bị đầu cuối theo chiều dọc?
Kiran Kumar Kotari

2
@KiranKumarKotari hãy thử vsplit term://bashnếu bạn đang sử dụng Neovim.
prater

4
với vim 8.0 trở lên, terminallệnh chia nhỏ cửa sổ và đưa ra một vỏ lệnh với màu đặc biệt trên thanh trạng thái cửa sổ. Bóng mượt.
NoelProf

@KiranKumarKotari vert [ical] ter [minal]
MPA95

46

Nó phụ thuộc vào hệ điều hành của bạn - thực sự thì tôi đã không thử nghiệm nó trên MS Windows - nhưng Conque là một trong những plugin tốt nhất hiện có.

Trên thực tế, nó có thể tốt hơn, nhưng hoạt động.


4
Nếu bạn đang sử dụng Vundle để quản lý các plugin, bạn có thể thêm Bundle 'jewes / Conque-Shell' vào tệp .vimrc của mình và chạy: BundleInstall để cài đặt nó.
Mingjiang Shi

Một điều cần lưu ý: Yêu cầu + python hoặc + python3 đối với vi có thể là một kẻ giết người trong một số môi trường làm việc.
cfi

Đây là URL được cập nhật (có ảnh chụp màn hình): github.com/wkentaro/conque.vim
Walty Yeung

18

:vsphoặc :sp- chia vim thành hai trường hợp nhưng bạn không thể sử dụng: shell chỉ trong một trong số chúng.

Tại sao không hiển thị tab khác của thiết bị đầu cuối mà không phải là tab khác của vim. Nếu bạn thích ý tưởng, bạn có thể thử nó: Ctrl-shift-t.và di chuyển giữa chúng với Ctrl - pageupCtrl - pagedown

Nếu bạn chỉ muốn một vài lệnh shell, bạn có thể thực hiện bất kỳ lệnh shell nào trong vim bằng cách sử dụng !

Ví dụ :!./a.out.


1
Và để chạy một thực thi hiện đang mở, bạn có thể sử dụng vimcon đường kỳ diệu như vậy::!./%
cprn

Tại sao không hiển thị một tab khác của thiết bị đầu cuối - không phải ai cũng đang sử dụng vim trong trình mô phỏng thiết bị đầu cuối trên GUI… Từ Ctrlbất cứ điều gì tôi cho rằng câu trả lời của bạn giả định là gnome-terminal hoặc một trình mô phỏng tương tự.
törzsmókus

8

Bạn có thể sử dụng tmuxhoặc screen(thứ hai là chỉ có thể thực hiện tách ngang mà không có miếng dán) để chia thiết bị đầu cuối của bạn. Nhưng tôi không biết cách để có một phiên bản Vim trong cả hai ngăn.


4
màn hình có thể phân chia theo chiều dọc nếu bạn xây dựng nó từ git.
Randy Morris

8

Nếu bạn chưa tìm hiểu, bạn có thể sử dụng plugin màn hình .

Conque cũng đặc biệt nhưng tôi thấy màn hình thực tế hơn nhiều (ví dụ như nó sẽ không "xả rác" vào bộ đệm của bạn và bạn chỉ có thể gửi các lệnh mà bạn thực sự muốn sau khi chỉnh sửa chúng trong bộ đệm của mình)


6

Tôi đoán đây là một câu hỏi khá cũ, nhưng bây giờ vào năm 2017. Chúng tôi có neovim, là một nhánh của vim bổ sung hỗ trợ thiết bị đầu cuối.

Vì vậy, việc gọi :termsẽ mở ra một cửa sổ đầu cuối. Vẻ đẹp của giải pháp này trái ngược với việc sử dụng tmux (một bộ ghép kênh đầu cuối) là bạn sẽ có các ràng buộc cửa sổ giống như vimthiết lập của bạn . neovim tương thích với vim, vì vậy về cơ bản bạn có thể sao chép và dán.vimrc và nó sẽ hoạt động.

Ưu điểm hơn nữa là bạn có thể chuyển sang chế độ bình thường trên thiết bị đầu cuối đã mở và bạn có thể sao chép và chỉnh sửa cơ bản. Tôi đoán nó cũng khá hữu ích cho các cam kết git, vì mọi thứ trong bộ đệm của bạn, bạn có thể sử dụng trong chế độ tự động hoàn thành.

Tôi sẽ cập nhật câu trả lời này vì vim cũng đang có kế hoạch phát hành hỗ trợ thiết bị đầu cuối, có thể là trong vim 8.1. Bạn có thể theo dõi tiến trình tại đây: https://groups.google.com/forum/#!topic/vim_dev/Q9gUWGCeTXM

Sau khi nó được phát hành, tôi tin rằng đây là một thiết lập vượt trội hơn so với việc sử dụng tmux.


6
Nó đã được phát hành trong Vim 8.0 Tôi nghĩ
LangeHaare


1

Không hoàn toàn là những gì bạn đang yêu cầu, nhưng bạn có thể quan tâm bởi plugin vim-notebook của tôi cho phép người dùng giữ cho một quy trình nền tồn tại và làm cho nó đánh giá một phần của tài liệu hiện tại (và ghi kết quả đầu ra trong tài liệu). Nó được thiết kế để được sử dụng trên các tài liệu kiểu sổ ghi chép có chứa các đoạn mã được đánh giá.


0

Bạn có thể muốn mở một chương trình "màn hình", chia đôi màn hình, mở trình bao trên một chương trình và vim trên một chương trình khác. Làm việc cho tôi.


Đã hủy -1 vì không có lời giải thích. Bên cạnh đó, tôi đã thử nghiệm giải pháp plugin màn hình vim và nó không khác nhiều so với giải pháp của mrcybul. @mrcybul: xe tăng cố gắng giúp đỡ. Để tránh bị phản đối, hãy đọc kỹ các câu trả lời khác và chỉ thêm câu trả lời của riêng bạn nếu bạn nghĩ nó mang lại điều gì đó mới mẻ. Cũng bao gồm lý do tại sao giải pháp của bạn có thể tốt hơn trong một số trường hợp nhất định.
Titou

0

Tôi hiện đang sử dụng tmux.

Cài đặt: sudo apt-get install tmux Chạy nó: tmux

Ctrl + b theo sau là Ctr +%: nó chia cửa sổ đầu cuối của bạn thành hai nửa dọc.

Ctrl + "mũi tên trái | mũi tên phải": di chuyển giữa các thiết bị đầu cuối.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.