chỉnh sửa / chuyển đổi vim giữa nhiều tệp một cách hiệu quả trong các cấu trúc thư mục lớn


11

Tôi không có nghĩa là một người sử dụng năng lượng vim, tôi chỉ mới bắt đầu nắm bắt các chuyển động và lệnh nâng cao với vim. Nhưng có một nhược điểm mà tôi dường như không thể có được.

Tôi lớn lên với các chương trình đồ họa để viết mã, nhưng gần đây tôi mới bắt đầu sử dụng vim qua ssh & screen để làm việc trên các dự án khá lớn với nhiều thư mục.

Tôi tò mò không biết các bậc thầy vim làm gì để làm việc với nhiều tệp một cách nhanh chóng và dễ dàng. Hãy xem xét một ứng dụng đường ray làm ví dụ. Giả sử bạn muốn chỉnh sửa bộ điều khiển để bạn chạy.

vim app/controllers/controller.rb

Nhưng sau đó, bạn nhanh chóng muốn thay đổi để chỉnh sửa chế độ xem hoặc di chuyển db, bản năng đầu tiên của tôi là :wq, quay lại bash để điều hướng đến thư mục đó và bắt đầu lại vim trong bộ đệm hoàn toàn mới.

Điều này rõ ràng là sai lầm.

Tôi đã học được về một số điều như:

  • Máy khách (nhưng tôi không muốn sử dụng X trên ssh và đây có vẻ là cách duy nhất)
  • :eđể mở một tệp khác bằng cách duyệt, nhưng tôi dường như không thể làm điều đó rất nhanh. Tab hoàn thành thực sự làm tôi vấp ngã.
  • Mở toàn bộ thư mục và tìm kiếm thông qua bộ đệm.
  • NERDTree đầy hứa hẹn, nhưng tôi thực sự muốn tránh xa mọi đại diện đồ họa để tiếp tục buộc tôi phải làm chủ điều hướng dòng lệnh

Tôi xin lỗi vì đã ngây thơ, nhưng tôi thực sự muốn tìm hiểu cách chính xác để đi về nó ngay cả khi nó chủ quan nặng nề.

Phương pháp của bạn là gì, và bạn muốn giới thiệu cái gì?


Đặc biệt, đối với Ruby on Rails, plugin rails.vim của Tim Pope có một số lệnh hay (đã hoàn thành; có thể mở rộng theo phân cấp mới) để mở tệp cho mô hình / lượt xem / bộ điều khiển / di chuyển / kiểm tra / kiểm tra (xem rails-type-navigationtrong tài liệu hoặc :help rails-type-navigationkhi bạn đã cài đặt nó).
Chris Johnsen

Câu trả lời:


7

Có thể thiết lập vim để chỉnh sửa nhiều tệp mà không cần phải thoát. Bạn sử dụng nhiều bộ đệm và chuyển đổi giữa chúng. Vì bạn đang sử dụng vim bên trong màn hình, bạn có thể đặt phần sau vào ~ / .vimrc để kích hoạt tính năng đó.

   set hidden
   syntax enable
   source $VIMRUNTIME/menu.vim
   set wildmenu
   set cpo-=<
   set wcm=<C-Z>
   map <F4> :emenu <C-Z>
   nmap <Esc>[5D :bp<CR>
   nmap <Esc>Od  :bp<CR>
   nmap <Esc>OD  :bp<CR>
   nmap <Esc>[5C :bn<CR>
   nmap <Esc>Oc  :bn<CR>
   nmap <Esc>OC  :bn<CR>
   nmap <Esc>[3~ :bd<CR>
   nmap ZZ :bd<CR>

Các ánh xạ chính đó ánh xạ tới các phím mũi tên Ctrl-Trái và Phải để chuyển giữa các bộ đệm. Phím F4 gọi cùng menu mà GUI sẽ hiển thị. Nhấn tab bây giờ cũng hiển thị một menu nhỏ để chọn hoàn thành khi nhấn tab của bạn.


Mẹo rất hay, ba câu trả lời này thực sự giúp tôi cảm thấy thoải mái hơn. Quản lý bộ đệm tốt mà không cần plugin là một kỹ năng tuyệt vời để có. Yêu người hoang dã!
febs

5

Hừ! Tôi đã từng giống hệt bạn, vì vậy tôi biết chính xác bạn đến từ đâu. Ngay cả bây giờ tôi biết những gì tôi đang làm ở một mức độ nhất định (tôi không phải là thần vim, nhưng tôi hy vọng sẽ đến đó) Thỉnh thoảng tôi vẫn sẽ làm một: wq và lấy lại vỏ của mình.

Kiểm tra này - điều này có thể giúp bạn. (Nó cũng sẽ giúp tôi, vì tôi chưa bao giờ biết về điều này. Đó là điều tuyệt vời về các trang web stackexchange - bạn học bằng cách giúp người khác học!)

Dưới đây là một số điều mà tôi làm.

  1. Các :elệnh. Từ bên trong vim, khi chỉnh sửa một tệp, bạn có thể làm một cái gì đó như thế :e dir/subdir/otherfilevà nó sẽ mở nó trong một bộ đệm mới, nghĩa là bạn sẽ mở hai tệp cùng một lúc.

  2. Ctrl-Shift-6(Không biết giá trị ascii thực tế). Nếu bạn mở hai bộ đệm, bạn có thể chuyển đổi giữa chúng trong nháy mắt với chuyển đổi này.

  3. bd- xóa bộ đệm. Cho phép bạn xóa một bộ đệm.

  4. Đây là một trong những thực sự thực sự tiện dụng - :sh. Nếu bạn phải quay lại shell vì bất kỳ lý do gì (giả sử, để xem một thư mục và chmod một tệp), bạn có thể gọi lệnh shell của vim làm điều đó. Thoát khỏi vỏ sẽ đưa bạn trở lại nơi bạn đang ở trong vim.

  5. Trong cùng thể loại như trên - gõ :!và một lệnh unix sau đó sẽ thực hiện lệnh đó. Hãy thử điều này với ls. (Tôi nghĩ rằng nó cũng hoạt động với các nội dung shell, nhưng tôi không chắc chắn.)

Đó là những người tôi sử dụng tất cả các thời gian. Ngoài ra còn có :ncho :ptập tin tiếp theo và cho tập tin trước đó, vì bạn có thể có nhiều hơn hai bộ đệm mở trong vim cùng một lúc (mặc dù tôi thường không làm điều này).


Tuyệt vời cảm ơn bạn cho những lời khuyên. Tôi cũng tìm thấy cái này: wincent.com/products/command-t . Tôi rất thích bắt đầu sử dụng nó. Nhược điểm duy nhất là bạn cần ruby ​​(không thân thiện với đồ ssh), nhưng đó chính xác là thứ tôi đang tìm kiếm. Điều đó kết hợp với :sh, :evà quản lý bộ đệm thích hợp và mọi thứ trở nên hấp dẫn
febs

Trong hầu hết các shell (tức là shell có kiểm soát công việc) Ctrl+Znên tạm dừng quá trình ( fgtừ shell để hiển thị lại) - đó là thay thế cho :sh.
maxschlepzig

Một mẹo tuyệt vời khác! Thông minh! Tôi sẽ phải biên dịch những thứ này trong một bài đăng trên blog hoặc một cái gì đó.
febs

2

Đó là nơi bạn bắt đầu sử dụng plugin . Đối với quản lý tệp (hoặc bộ đệm) cây NERDMiniBufExplorer là các lựa chọn phổ biến. Trong trường hợp của bạn, tôi sẽ google " vim ruby ​​ide " và làm theo một trong nhiều hướng dẫn mà tôi tìm thấy. Tôi sử dụng Python và 3 lệnh trong hướng dẫn này cấu hình mọi thứ tôi cần từ Vim.


2

Tôi cũng sẽ khuyên bạn nên sử dụng các cửa sổ tách để xem nhiều tệp cùng một lúc. Thêm một số kỹ năng với bộ đệm và quản lý cửa sổ trong VIM và bạn sẽ trở thành ninja VIM ngay lập tức.

Đối với tài liệu thực tế, tôi sẽ giới thiệu bạn đến Tài liệu VIM Windows , nhưng tôi sẽ cố gắng cung cấp cho bạn một khởi đầu ở đây.

Bắt đầu VIM với 2 (hoặc nhiều hơn) cửa sổ chia theo chiều ngang, cửa sổ trên cùng có tệp1, cửa sổ tiếp theo xuống có tệp2, v.v.

vim -o <file1> <file2> (file3 file4 ...)

Bắt đầu VIM với 2 (hoặc nhiều hơn) các cửa sổ phân chia theo chiều dọc, hầu hết các cửa sổ bên trái có tệp1, cửa sổ tiếp theo có tệp2, v.v.

vim -O <file1> <file2> (file3 file4 ...)

Di chuyển con trỏ đến một cửa sổ khác:

CTRL-W <vim direction key> (h=left, j=up, k=down, l=right)

Đã chỉnh sửa một tệp, nhưng cũng muốn tách cửa sổ và chỉnh sửa một tệp khác:

:split <file2>
:vsplit <file2>

Đối với phân chia ngang và dọc tương ứng.

Ngoài ra còn có các lệnh để di chuyển các cửa sổ xung quanh, thay đổi kích thước chúng, v.v.


1

Sử dụng lệnh vi: split để mở cửa sổ chỉnh sửa thứ hai. chia có thể thực hiện cả chia tách ngang và dọc và nhiều hơn hai lần cùng một lúc. Tôi đã có tới 10 tệp được mở trong cùng một phiên vi.

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.