Sử dụng Vim khi mã hóa một ứng dụng quy mô lớn


17

Tôi đang bắt đầu tìm hiểu Vim và làm theo một số lời khuyên được đưa ra ở đây trong stackexchange. Tôi bắt đầu sử dụng nó trong một số dự án đồ chơi và tôi rất tuyệt với điều đó.
Nhưng tôi bắt đầu tự hỏi làm thế nào bạn có thể làm việc hiệu quả mà không cần mở các tệp khác mọi lúc chỉ để biết Tên của lớp đó như thế nào, macro đó có trong tệp nào khác, v.v.

Những lời khuyên phổ biến bạn có thể đưa ra là gì?


1
Bạn chắc chắn sẽ cần thêm một số tập lệnh Vim để giúp đỡ. Tôi sử dụng Vim để lập trình rất nhiều và tôi luôn sử dụng ctags để giúp tôi điều hướng xung quanh mã nguồn. Ngôn ngữ nào đang sử dụng?
tehnyit

Câu trả lời:


10

Một khía cạnh của các lập trình viên có kinh nghiệm chuyển từ IDE sang môi trường console / xterm, là tìm một sự thay thế cho việc lập chỉ mục các đối tượng mã nguồn (tên hàm, biến). Tôi tin rằng thuật ngữ chung được sử dụng cho Visual Studio của Microsoft là Intellisense hoặc đại loại như thế.

Trong thế giới Unix / Linux, chẳng hạn như vim, một công cụ được sử dụng nếu ctagshoặc triển khai Nguồn mở đa ngôn ngữ phổ biến, ctags quá mức . Nó không vimcụ thể và được hỗ trợ bởi một số trình soạn thảo văn bản Unix, Linux, MS Windows, Mac OS, bao gồm Emacs, CRiSP, vile & một số vi nhân bản khác, nedit, gedit, JED, UltraEdit, BBEdit và DreamWeaver (một số trong số này là thông qua các plugin của bên thứ ba).

Ngoài ra, thiết kế tốt và phân tách chu đáo, tổ chức các dự án lớn hơn giúp dự án có thể quản lý được ở chỗ chỉ có 1-2 vị trí tiềm năng rõ ràng để tìm kiếm bất kỳ bit thông tin nhất định ( typedefhoặc classđịnh nghĩa, v.v.).

Ngoài ra, tôi sử dụng nhiều phiên bản của vim (thường thông qua viewđể xem các tệp nguồn chỉ đọc), cũng như sử dụng hạn chế nhiều bộ đệm chỉnh sửa cho mỗi phiên bản vim (chủ yếu để di chuyển hoặc tái cấu trúc mã giữa các tệp). Tôi thấy việc chỉ sử dụng một vài tệp nguồn mở tại một thời điểm có thể giúp theo cách nhỏ bé của riêng mình, để giúp tôi tập trung vào nhiệm vụ trong tay.


1
+1 để đề xuất ctags hào hứng !
Attila O.

1
Tôi thấy rằng chỉ cần được tổ chức giúp đỡ rất nhiều. Nếu bạn có thể nhìn vào một vật phẩm trong nguồn và nói "Ồ phải được xác định ở nơi này" thì mọi thứ trở nên đơn giản hơn rất nhiều. Về mặt tích cực, việc bắt đầu các phiên vim nhanh đến mức có một nửa tá mở cùng một lúc trở thành một điều khá bình thường
Zachary K

@ZacharyK Nửa tá? Tôi thường có một tá đầy đủ vào cuối ngày
Izkata

phụ thuộc vào ngày
Zachary K

7

Tôi không có ý định tham gia vào cuộc tranh luận giữa VIM và IDE. Tôi đoán đó là pref cá nhân. Nhưng tôi sử dụng rất nhiều VIM và đây là lý do tại sao tôi thấy nó rất mạnh để sử dụng vim

Hai phần của câu trả lời:

A. Hầu hết mọi thứ VIM cho phép hầu hết mọi thứ bạn có thể làm với IDE, (tôi không cố gắng đưa mọi tính năng mà chỉ là một vài điều không rõ ràng khiến vi trông có vẻ hạn chế)

  1. bạn có thể đi qua các nguyên mẫu nếu bạn đã ctagsbật và làmctrl+{

  2. Bạn có thể mở nhiều cửa sổ đồng thời hát: lệnh sp 'filename'. Tất nhiên, đôi khi tôi chỉ mở nhiều thiết bị đầu cuối để làm cho cuộc sống dễ dàng hơn.

  3. Cú pháp tô sáng mạnh mẽ. Mặc định cũng như những thứ khác. Ngoài ra, không giống như một số IDE, nếu có sự không phù hợp của niềng răng mở, chuỗi hoặc không khớp với các hàm đóng, cung cấp cho bạn một dấu hiệu rất rõ ràng. Nó dành cho hầu hết các ngôn ngữ hơn là cụ thể.

  4. Bạn có thể thực thi dòng lệnh bằng cách sử dụng lệnh ":!make"mà không cần ra khỏi cửa sổ.

  5. Di chuyển nhanh hơn nhiều dựa trên từ, dựa trên tìm kiếm (vi hỗ trợ regrec nếu bạn có sẵn) và bạn có thể duyệt { đến } bằng cách sử dụngESC %

  6. Có thể thực hiện công việc trong GDB trong khi thực hiện bước gỡ lỗi và giữ vi (trong cửa sổ khác để làm việc với mã). Khi bạn quyết định thay đổi tệp, bạn có thể thực hiện lại và tải lại trong GDB.

B. Nhiều điều bạn thấy nó tốt hơn trong VIM

  1. Tìm kiếm và thay thế chắc chắn là mạnh mẽ hơn nhiều.

  2. Bạn có thể tạo giao diện tùy chỉnh và cảm nhận của bạn và (đen + xanh lục như được chuyển sang trắng + xanh) và quan trọng hơn là lệnh mạnh mẽ của riêng bạn.

  3. Chọn khối dọc. Hãy thử ctrl+vvà di chuyển con trỏ theo chiều dọc. Đây thực sự là một tính năng không thể tưởng tượng!

  4. Âm thanh chói tai - nhưng hãy cố gắng cắt / sao chép một khối và phải vượt qua nó 30 lần! Không mất nhiều công sức hơn làm 1 lần. Ngoài ra, hãy thử làm lại (không hoàn tác) một hoạt động một hoặc nhiều lần.

  5. Tự động thụt lề, kiểm soát tab và cách tự động để chuyển đổi nhận xét của bạn trong các nhận xét hoặc nhận xét về kiểu dáng cụ thể.

  6. Xung đột hợp nhất hiệu quả với vimdiff.

  7. Điều quan trọng nhất với môi trường làm việc dựa trên bảng điều khiển là bạn không bao giờ chạm vào chuột! Vì vậy, nếu bạn nhanh chóng trên bàn phím - IDE không tốt.

  8. Làm việc trên nhiều máy, máy chủ cùng một lúc! Không có vẻ rõ ràng nhưng đôi khi khi bạn làm việc trên máy chủ, bạn trực tiếp đăng nhập vào nhiều máy và thực hiện mọi việc.

Sẽ trả lời về cách làm trong vi nếu những tính năng đó có nhu cầu nghiêm trọng. Xem trang web này Vimcast . Tất nhiên, có rất nhiều.

Nhưng vâng, hầu hết các công cụ dựa trên giao diện điều khiển đều lỗi thời và không có cách nào tôi nói bất cứ điều gì chống lại IDE.


Lưu ý nhỏ: vim có một :makelệnh được tích hợp sẵn, bạn thậm chí không cần !(mà, đối với những người không sử dụng vim, sẽ thực thi một lệnh trên thiết bị đầu cuối). Và tôi vừa tìm thấy ctrl-vmột vài tuần trước và bây giờ tôi sử dụng nó liên tục, nó cực kỳ hữu ích.
Kevin

@Kevin - ok tôi không biết về <code>: make </ code>! Điều này thật thú vị khi biết. Đây là một kiểu lãng mạn mà bạn có được với VIM - người ta không bao giờ có thể tạo một danh sách đầy đủ các tính năng mà VIM có thể cho phép bạn làm !! Nó luôn làm bạn ngạc nhiên. Cảm ơn.
Dipan Mehta

Vâng, nó thật tuyệt như thế. Ưu điểm của :makenó là nó tự động chuyển bạn đến lỗi đầu tiên và bạn có thể điều hướng chúng bằng cncp, xem :help make. Tôi thực sự đã không nhận ra điều đó cho đến khi tôi nhìn nó; Tôi thường tạo trong một cửa sổ và pwd khác, có vẻ như bạn phải ở cùng một cửa sổ với Makefile, mặc dù bạn có thể đặt một trong thư mục src chỉ để di chuyển đến thư mục gốc và thực hiện ở đó.
Kevin

4

Theo tôi, Vim cung cấp cho bạn một trình soạn thảo rất mạnh với các tính năng cơ bản, nhưng tùy thuộc vào bạn để thêm nó vào các tập lệnh / addons mà bạn rất có thể sẽ sử dụng trong các dự án của mình. Chúng có thể sẽ khác nhau tùy thuộc vào việc bạn chủ yếu chỉnh sửa tập lệnh, tài liệu hoặc tệp cần được biên dịch.

Như một ví dụ, tôi sử dụng zencodingcho việc chỉnh sửa html / css thường xuyên, snipmatecho Textmate giống như đoạn, và một vài add-ons python-liên quan ( pyflakes, pep8, vimpdb, vv) cho Python mã hóa, đó là những gì tôi làm thường xuyên nhất.

Sau đó, có những addon khác mà tôi không sử dụng thường xuyên, nhưng tôi vẫn thấy chúng hữu ích mỗi lần, như DpasteConqueTerm.

Tuy nhiên, với tôi, các tính năng hữu ích nhất của Vim được tích hợp (hoàn tác dựa trên thời gian, điều hướng nhanh, bộ lọc phạm vi, v.v.) - những thứ mà tôi không thể tìm thấy (hoặc ít nhất là không dễ truy cập ) trong IDE. Vì vậy, một khi bạn thiết lập Vim của mình để có các bit và mẩu IDE mà bạn thực sự cần ( snipmate, ctags...), bạn có thể nhận được lợi ích từ cả môi trường IDE và giao diện điều khiển.

Việc sử dụng Vim của tôi chỉ dành cho bảng điều khiển, vì vậy tôi không thể nói các công cụ này hữu ích như thế nào với Gvim.

Mặc dù có tất cả sự tốt đẹp của addon, tuy nhiên, tôi vẫn thấy mình đang chạy !grep ...hoặc ^Z + find ...mọi lúc mọi nơi.


3

Tôi làm tất cả các chương trình của tôi trong vim. Tôi thực sự thấy nó dễ dàng hơn bất kỳ IDE nào tôi đã sử dụng. Bạn có thể mở nhiều tệp cùng một lúc, ngay cả trên cùng một màn hình (tra cứu các tab và cửa sổ). Tôi thường làm việc trong X, vì vậy tôi có một vài (6) màn hình xterm mở: một cho các tệp c trong vim (một số trong tab), một cho các tiêu đề trong vim (cũng là các tab) và các cửa sổ không vim: xây dựng, gỡ lỗi , cấu hình, v.v. Ngay cả khi tôi đang sử dụng bảng điều khiển thuần túy, tôi có thể sử dụng tab, cửa sổ và mã gấp để xem những gì tôi cần và tôi có thể xây dựng và thậm chí xem các trang web mà không cần thoát vim, bạn chỉ cần biết lệnh đúng. Và có rất nhiều, tôi chắc chắn tôi thậm chí không làm chủ được một nửa trong số họ. Và thật khó để đánh bại tìm kiếm và thay thế của vim.


1

Nhiều ứng dụng quy mô lớn đã được (của tôi, ít nhất là hai;), và tôi đoán là, nhiều ứng dụng khác sẽ được viết hoàn toàn bằng Vim. IDE như vậy vẫn là một sự đổi mới khá hiện đại , có thể nói.

Tuy nhiên, vanilla vi (ouch) hoặc Vim đơn giản là một chút thiếu. Biết Vim và suy nghĩ theo một số cách giúp ích một chút và các plugin giúp ích rất nhiều , trong đó www.vim.org là một nguồn vô tận. Một số cụ thể cho ngôn ngữ bạn đang sử dụng và một số ngôn ngữ chung (để bình luận, để duyệt tệp, cho ...) biến nó nhanh chóng thành một môi trường phát triển rất nhanh. Sau tất cả (và một số người chắc chắn sẽ tranh luận) một IDE chỉ là một trình soạn thảo với các plugin được đóng gói trong một giao diện đẹp hơn. Không có nhiều đồ họa trong IDE.

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.