2010-04-06 36 views

Trả lời

5

={motion}

:h =

T.B. Bạn không nên sử dụng vi nếu vim có sẵn.

+0

Chuyển động là gì? – Xofo

+1

': h {motion}'. Và xin vui lòng đọc về cơ bản của vim. – wRAR

+7

Tôi sẽ đọc những điều cơ bản ... nhưng bạn có thể giải thích lệnh này? x – Xofo

4

Nếu indents bằng tay điều chỉnh tôi sẽ mở ra một khối thị giác với V trên dòng đầu tiên hoặc cuối cùng tôi muốn tái-indent, di chuyển đến cú đúp chứa khối, goto cú đúp khác với % sau đó chuyển dòng với > hoặc <

Nếu indents đang tắt bởi rất nhiều tôi sẽ chuyển tất cả mọi thứ tất cả các cách trái với < và lặp lại nó với . và sau đó tất cả mọi thứ lại thụt lề.

Một giải pháp khác là sử dụng unix fmt lệnh như mô tả trong Your problem with Vim is that you don't grok vi., {!}fmt

+1

Lưu ý rằng chế độ trực quan không khả dụng trong vi. – wRAR

43

Những lệnh trong việc trả lời của tôi trong vim. Hầu hết những người nghĩ rằng họ đang sử dụng vi đang sử dụng vim. Để tìm hiểu xem 'vi' của bạn có thực sự là 'vim' hay không, hãy mở vi và gõ :version - nếu nó là vim, nó sẽ nói như vậy. Nếu không, bạn có thể chỉ thấy một số phiên bản mà không có tên của chương trình. Ngoài ra, khi bạn mở vim lần đầu tiên bạn sẽ thường thấy một màn hình giật gân của một số loại mà nói "VIM - VI được cải thiện" ...

Automatic Indentation

Để bật tính năng tự động thụt đầu dòng trên, hãy chắc chắn rằng vim biết loại tệp bạn đang chỉnh sửa (nó thường tự động phát hiện tệp này từ phần mở rộng tên tệp, nhưng có thể không tìm ra nó với một số loại tệp). Bạn có thể cho nó biết loại tập tin bằng cách sử dụng các menu để tô sáng cú pháp. Sau đó, làm điều này:

:filetype indent on 

Bạn có thể tắt tính năng tự động thụt đầu dòng với

:filetype indent off 

Tự động điều chỉnh/sửa thụt đầu dòng

Nói chung, = {chuyển động} sẽ sắp xếp mã đến mức thụt lề.

  • == align dòng hiện
  • =i{ align khối nội
  • =% align để khớp ngoặc/khung dưới con trỏ
  • =14j hoặc 14== class 14 tiếp theo dòng
  • =G class đến cuối của tập tin
  • vG= điều tương tự, sắp xếp đến cuối của tập tin (nhưng sử dụng chế độ hình ảnh)
  • vjjj= class bốn dây chuyền (sử dụng chế độ trực quan)

tay thụt đầu dòng

Nếu vim không đoán mức độ thụt đầu dòng một cách chính xác, có hai cách để thay đổi nó:

  • Nếu bạn đang ở trong chế độ bình thường (trong đó tất cả mọi thứ là một lệnh), làm << chuyển một dòng trái, hoặc >> để dịch chuyển ngay bằng một tab. Bạn có thể thực hiện điều này bằng nhiều dòng bằng cách sử dụng các lệnh chuyển động giống như tôi đã trình bày ở trên (ví dụ: >i{ thụt lề khối mã bên trong hiện tại).
  • Nếu bạn đang ở trong chế độ chèn, bạn có thể thụt dòng hơn nữa (không di chuyển con trỏ) bằng cách thực hiện một Ctrl-T, hoặc bỏ thụt lề một tab với Ctrl-D

hiệu chỉnh dấu bằng, vv

Nếu bạn muốn sắp xếp dấu bằng trong một danh sách các tờ khai, bạn nên xem xét sử dụng kịch bản vim này: http://www.vim.org/scripts/script.php?script_id=294

Điều chỉnh thụt đầu dòng/tab kích thước

Nếu bạn muốn vim để sử dụng không gian thay vì tab khi nó indents, chạy lệnh này (hoặc cân nhắc việc thêm nó vào tập tin vimrc của bạn)

:set expandtab 

Để thiết lập bao nhiêu không gian bằng một tab, tôi thường làm điều này:

:set expandtab softtabstop=3 tabstop=3 shiftwidth=3 
  • tabstop - có bao nhiêu cột một số lượng tab cho (ảnh hưởng đến hiển thị các ký tự tab hiện có)
  • shiftwidth - kiểm soát kích thước reindentation với < < và >>, trong số các lệnh khác.
  • softtabstop - bao nhiêu không gian để chèn khi bạn nhấn phím Tab
  • expandtab - mở rộng phím tab để không gian

Nhưng nếu bạn phải làm việc với số tiền khác nhau của các tab rất nhiều, bạn cũng có thể sử dụng chức năng này và keybinding:

function! Ktabs(tabsize) 
    execute "set softtabstop=" . a:tabsize . " tabstop=" . a:tabsize . " expandtab shiftwidth=" . a:tabsize 
    "set softtabstop=a:tabsize tabstop=a:tabsize expandtab shiftwidth=a:tabsize 
endfunction 
noremap <leader><Tab> :call Ktabs(3)<Left> 

Nếu bạn đang chỉnh sửa một tập tin với một sự pha trộn của các tab và không gian, bạn có thể muốn sử dụng lệnh này sau khi cài đặt kích thước tab:

:retab 
+3

Ngoài ra, nếu bạn muốn thay đổi mức thụt lề mặc định, bạn có thể: đặt shiftwidth = n và: đặt tabstop = n trong đó n là mức không gian mong muốn. – SplittingField

+0

@SplittingField, điểm tốt. Tôi có xu hướng: đặt expandtab để các khoảng trống được chèn thay vì các tab theo nghĩa đen, nhưng nếu bạn làm như vậy thì bạn cũng có thể cần: đặt softtabstop = n –

Các vấn đề liên quan