Truy cập vào thiết bị đầu cuối trong khi bạn đang trên Vim


40

Có cách nào để truy cập thiết bị đầu cuối trong khi sử dụng Vim không?

Tôi không thích mở một thiết bị đầu cuối khác hoặc lưu và thoát khỏi thiết bị đầu cuối hiện tại.


Mở một tab mới? (Ctrl + Shift + T)
Wilf

2
Đã bao nhiêu lần làm điều đó :) Tôi không thích làm điều đó D:
Mohammad Reza Rezwani

1
Bạn đã thử sử dụng một trình quản lý cửa sổ đầu cuối như tmux chưa?
jrg

Câu trả lời:


67

Bạn có thể gửi vim tín hiệu SIGTSTP. Bạn làm điều này bằng cách nhấn ctrl+ z. Vim sẽ bị treo trong nền và bạn có thể sử dụng thiết bị đầu cuối. Gõ fgvào terminal để tiếp tục với vim.

Tiền thưởng: Điều này hoạt động trên gần như tất cả các ứng dụng đầu cuối. Sử dụng bgđể cho phép ứng dụng tiếp tục chạy trong nền.


21
Hoặc chỉ %thay vì fg. Hoặc %1, %2vv nếu bạn có nhiều công việc nền. jobslệnh sẽ liệt kê chúng. (Giả sử bashnhư cái vỏ.)
Ruslan

4
Tôi bỏ phiếu cho phương pháp ^ z (và sau này là fg), bởi vì nó có thể được sử dụng trong hầu hết tất cả các quy trình hệ vỏ - đó không phải là một điều vim, đó là một thủ thuật cách sử dụng rất hữu ích trong các bối cảnh khác.
dman

35

Trong vim, chỉ cần gõ:

:!sh

:!khởi chạy một quá trình bên ngoài - trong trường hợp này sh, một vỏ khác. Kiểm soát sẽ trở lại vim khi bạn thoát khỏi shell. Nếu bạn muốn sử dụng shell đồng thời với vim, hãy thêm &vào cuối lệnh sh:

:!sh&

9
Hoặc chỉ sử dụng :shell.
wchargein

2
Đây là câu trả lời tốt nhất cho hầu hết các mục đích.
Frank Conry

Điều đó thật tuyệt nhưng còn khi lệnh đang chạy một máy chủ, như thế nào http-servervà nó sẽ in ra các bản ghi mà tôi muốn xem thì sao? Tôi muốn có thể chuyển sang tập tin của mình, chỉnh sửa, sau đó chuyển về nhật ký.
Costa

21

Bạn có thể sử dụng :shelllệnh (hoặc dạng ngắn :sh). Từ :help :shell:

Lệnh này bắt đầu một shell. Khi shell thoát ra (sau lệnh "exit"), bạn quay lại Vim. Tên của lệnh shell xuất phát từ tùy chọn 'shell'.

Theo mặc định, trên Ubuntu, điều này sẽ cung cấp cho bạn bash. gõ exitđể trở về vim khi bạn hoàn thành.


8

Kể từ vim gần đây, bây giờ bạn có thể làm:

:terminal

Điều này ban đầu được thêm vào trong Vim 8.0.693 , nhưng có rất nhiều lỗi. Xem :help terminal:

WARNING: THIS IS ONLY PARTLY IMPLEMENTED, ANYTHING CAN STILL CHANGE

The terminal feature is optional, use this to check if your Vim has it: 
        echo has('terminal')
If the result is "1" you have it.   

[...]

The terminal feature requires the +multi_byte, +job and +channel features.

==============================================================================
1. Basic use                                            terminal-use

This feature is for running a terminal emulator in a Vim window.  A job can be
started connected to the terminal emulator. For example, to run a shell: 
     :term bash

Or to run a debugger: 
     :term gdb vim

The job runs asynchronously from Vim, the window will be updated to show
output from the job, also  while editing in any other window.

7

Ngoài tất cả các câu trả lời.

Bạn có thể cài đặt plugin ConqueTerm

Plugin này cung cấp khả năng chạy các chương trình tương tác bên trong bộ đệm vim.

Sau khi cài đặt, bạn có thể thêm 2 dòng này vào .vimrc:

:nnoremap <S-w> :q!<CR>
:nnoremap <S-t> :ConqueTermSplit bash<CR>

Và bạn sẽ có thể chạy bashbằng cách nhấn Shift+ Tvà đóng tab Conque hiện tại bằng cách nhấn Shift+W

Đó là perferct nếu bạn cần mở / đóng nhanh bash.

Đây là gif cho thấy nó trông như thế nào


bạn có thể vui lòng xem xét cập nhật các bài viết? Các liên kết bạn đề cập có vẻ đã lỗi thời
ggulgulia

4

Một tùy chọn khác với màn hình hoặc byobu là mở một tab trong các chương trình đó. Các chương trình này làm cho nó khá dễ dàng để giữ một vỏ cq phiên cuối mở và chuyển đổi giữa các màn hình với bàn phím.


1

Với phiên bản mới của vim 8.1, tất cả những gì bạn cần làm chỉ là :terminalvà voila! (cái này được tích hợp sẵn)

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.