2012-07-03 14 views
24

Tôi thường chỉnh sửa các tệp dài trong vim có các khối mã ở nhiều vị trí khác nhau trong tệp mà tôi cần phải liên tục chuyển qua lại giữa. Rõ ràng, một cách để giải quyết điều này là chia cửa sổ với: chia nhỏ và chỉnh sửa từng phần trong một cửa sổ phân tách khác nhau và một :w trong cả hai cửa sổ sẽ lưu toàn bộ tệp. Điều này là tốt và tốt nếu bạn có một màn hình đủ lớn nhưng đôi khi tôi phải sử dụng vim trên một máy tính xách tay độ phân giải thấp và tôi không muốn giảm không gian màn hình của tôi hơn nữa bằng cách tách cửa sổ.Cách chỉnh sửa cùng một tệp trong nhiều tab trong vim?

Trong trường hợp này, điều tôi thực sự muốn làm là chỉnh sửa tệp trong nhiều tab và xử lý từng tab riêng biệt chính xác như chia tách chế độ xem riêng biệt. Tôi có thể bắt chước bằng cách sử dụng :tabopen <the same filename> khi tôi có một bản sao của tệp đang mở, nhưng đây là loại hacky - nó không hoạt động nếu tôi đã thực hiện thay đổi đối với tệp vì vim nghĩ rằng tôi chỉ mở nộp lần thứ hai.

Có cách nào tốt để có được hành vi mà tôi muốn với các tab trong vim không?

+4

Một cách khác để đạt được điều này là để đánh dấu vị trí trong tập tin với 'ma',' mb', vv và trở về vị trí với ' 'a',' 'b', v.v. –

Trả lời

28

Lệnh :tab nhận lệnh làm đối số.

Vì vậy, bạn có thể làm điều này:

:tab split 

này sẽ làm việc ngay cả khi bộ đệm được sửa đổi, và tiết kiệm trong cả hai tab lưu các tập tin, cập nhật trạng thái đã lưu trong cả hai.

+8

Hoặc': tab sp' cho ngắn – Conner

7

Bạn có thể sử dụng :tab lệnh:

:[count]tab {cmd}` 

Execute {cmd} và khi nó mở ra một cửa sổ mới mở một trang tab mới để thay thế. [...] Khi [count] bị bỏ qua, trang tab xuất hiện sau trang hiện tại. Khi [count] được chỉ định, trang tab mới xuất hiện sau trang tab [count]. Sử dụng :0tab cmd để tải trang tab mới làm trang tab đầu tiên.

Ví dụ:

:tab split   " opens the current buffer in new tab page 
:tab help gt   " opens tab page with help for "gt"