Điều hướng nhiều tập tin


11

Nếu tôi mở vim với nhiều tệp trên dòng lệnh, ví dụ như vim debug.log*tải debug.log, debug.log.1debug.log.2tôi có thể điều hướng giữa chúng, gán chúng cho nhiều cửa sổ ( :split/ :vsplit) hay không?

Phím tắt duy nhất tôi biết cho chế độ hoạt động này là :n, tải tập tin tiếp theo trong danh sách. Tôi có thể làm gì hơn nữa trong chế độ hoạt động đa tệp này? (hoặc chủ đề giúp bao gồm điều đó?)


3
:previous(hoặc :prev) là nghịch đảo của :nvà quay lại một tệp.
Giàu

Câu trả lời:


13

Chủ đề trợ giúp phù hợp nhất là :ls, còn được gọi là :fileshoặc :buffers.

Trong vim debug.log*ví dụ của bạn , nếu bạn đưa ra :lslệnh, bạn sẽ thấy:

:ls
  1 %a   "debug.log"                    line 1
  2      "debug.log.1"                  line 0
  3      "debug.log.2"                  line 0
Press ENTER or type command to continue

Xu chỉ ra rằng cái đầu tiên là bộ đệm hoạt động.

Để mở debug.log.2trong cửa sổ hiện tại, đưa ra lệnh :b 3hoặc :b debug.log.2để hiển thị bộ đệm 3.

Để tách cửa sổ và mở bộ đệm 2 trong đó, hãy ra :sb 2lệnh. Phiên bản phân chia theo chiều dọc của đó là :vert sb 2.

Có nhiều biến thể của :blệnh; duyệt các chủ đề trợ giúp được trích dẫn ở đây để cảm nhận về chúng.


Ngoài ra, bạn có thể gọi vim -o debug.log*để mở tất cả các tệp, mỗi tệp trong phần tách riêng của nó hoặc vim -O debug.log*để mở từng tệp theo cách phân chia theo chiều dọc.


6

Ngoài chức năng vim thô được đề cập bởi 200_success, hệ sinh thái của Vim có đầy đủ các plugin để cung cấp thêm chức năng, chẳng hạn như:

Tuy nhiên, trước khi bạn đi và bắt đầu sử dụng plugin, tốt nhất bạn nên hiểu đầy đủ về bộ đệm và cửa sổ trong vim.


1
Vui lòng đọc chính sách của chúng tôi về câu trả lời đề xuất plugin và thêm một số chi tiết về cách chính xác các plugin này có thể mang lại lợi ích cho người dùng.
200_success

5

Bạn cũng có thể mở vim với các thông số khác nhau.

Mở tệp trong tab:

vim -p debug.log*

Mở tệp trong phân chia dọc:

vim -o debug.log*

Có một plugin khá hay và mạnh mẽ có tên là CtrlSpace:

https://github.com/szw/vim-ctrlspace

Nó rất tiện dụng nếu bạn cần làm việc với nhiều tập tin. Đơn giản là bạn có thể tưởng tượng ctrl-space là danh sách bộ đệm riêng cho mỗi tab. Nó cung cấp cách rất dễ dàng để điều hướng giữa các tệp, như tác giả tuyên bố:

Vim-CtrlSpace là một plugin Vim để kiểm soát và sắp xếp không gian làm việc của bạn trong Vim. Bao gồm quản lý bộ đệm, tệp, tab, phiên và cuối cùng là các dự án. Cách tiếp cận của nó có phần độc đáo, nhưng chắc chắn bạn sẽ cảm thấy như ở nhà, đặc biệt nếu bạn sử dụng các cửa sổ, tab, bộ đệm, v.v.


Chào mừng bạn đến với Vi / Vim! Vui lòng đọc chính sách của chúng tôi về câu trả lời đề xuất plugin và thêm một số chi tiết về cách chính xác plugin giải quyết câu hỏi.
200_success 6/2/2015


3

Nếu bạn muốn mở một tệp cụ thể mà không cần phải thông qua :ls, bạn có thể sử dụng bất kỳ cách nào sau đây:

  • :vs filename mở tập tin theo chiều dọc
  • :sp filename làm như vậy, nhưng trong một phân chia ngang
  • :tabe filename mở trong một tab mới

Cũng đáng để biết rằng, nếu bạn không chỉ định tên tệp, bạn sẽ mở một tách / tab mới của tệp hiện tại, có thể hữu ích cho các tệp dài.


2
:tlà lệnh sao chép. Đối với :tabeditbạn cần ít nhất :tabe.
tommcdo

Oh dang, bạn hoàn toàn đúng. Cảm ơn, tôi sẽ chỉnh sửa!
Tom

0

Có một vài phím tắt hữu ích để điều hướng nhiều tệp:

  • CTRL-^(trong đó Nlà số bộ đệm) để chuyển đến tập tin đã chỉnh sửa trước đó.
  • N CTRL-^(trong đó Nlà số bộ đệm) để nhảy đến bộ đệm cụ thể.

    Ví dụ:

    • 1Control+^ - đi đến bộ đệm thứ 1
    • 2Control+^ - đi đến bộ đệm thứ 2
    • Vân vân.

    Điều này tương đương với :buffer N.

  • Sử dụng :Ex/ :Sex/ :Vexđể điều hướng thư mục hiện tại.

  • Sử dụng :tabsthay thế ( vim -p) với một số phím tắt tùy chỉnh .vimrcnhư:

    " TABS
    " To create a new tab (Control-T)
    nnoremap <C-t> :tabnew<CR>
    inoremap <C-t> <Esc>:tabnew<CR>
    " Tab Navigation (Control+Left <-> Control-Right, Shift+H <-> Shift+L).
    nnoremap <S-h> gT
    nnoremap <S-l> gt
    nnoremap <A-Left> gT
    nnoremap <A-Right> gt
    nnoremap <C-S-Tab> gT
    nnoremap <C-Tab> gt
    " Tab Close (Control-W)
    nnoremap <C-BS> :tabclose<CR>
    inoremap <C-BS> <Esc>:tabclose<CR>
    " Close All (Control-Q)
    nnoremap <C-q> :qa<CR>
    inoremap <C-q> <Esc>:qa<CR>
    
  • Sử dụng :ba/ :vert bađể phân tách, nhảy vào bộ đệm đã chọn thông qua Control+w, w/ W, sau đó đặt nó vào cửa sổ hiện tại ( :on).

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.