Các tính năng hữu ích nhất của VIM không phải là tiêu chuẩn trong IDE [đã đóng]


30

Tôi đang xem xét liệu tôi có nên bắt đầu sử dụng lại VIM thay vì IDE không. Các tính năng hữu ích nhất của VIM không phải là tiêu chuẩn trong IDE là gì?


3
Bạn sử dụng IDE nào? Nhiều IDE có plugin VIM để bạn có thể chỉnh sửa như thể bạn đang sử dụng VIM.
Brian R. Bondy

2
@Brian: Chắc chắn họ không mô phỏng tất cả các tính năng nâng cao?
Casebash

1
Có lẽ không phải tất cả nhưng những cái tôi đã sử dụng đều tuyệt vời cho VS. Có ít nhất 2 trong số đó. viemu.comgithub.com/jaredpar/VsVim
Brian R. Bondy

2
@Brian R Bondy: Không ai trong số họ thậm chí đến gần để bao quát tất cả các tính năng của vim. Họ làm trầy xước bề mặt và không thực sự làm gì nữa
Daenyth

2
Hoặc bạn có thể thực sự hợp lý và bắt đầu sử dụng emacsthay thế. ;-)
Orble

Câu trả lời:


32

Tôi không nghĩ rằng các tính năng tiên tiến của VIM làm cho nó trở nên mạnh mẽ như vậy. Thực tế là bạn không bao giờ phải rời tay khỏi bàn phím để làm bất cứ điều gì. Tìm một cái gì đó trong một tập tin lớn chỉ đơn giản là một vài lần nhấn phím. Mở và đóng nhiều tệp trong cùng một cửa sổ cũng cực kỳ nhanh.

Mặc dù ban đầu nó có vẻ không trực quan, nhưng nó cũng đáng để bạn dành thời gian. Ngay cả khi bạn không sử dụng nó làm IDE tiêu chuẩn của mình (ví dụ tôi thường sử dụng Visual Studio hoặc Eclipse), bạn sẽ thấy chính mình sử dụng VIM để nhanh chóng mở và chỉnh sửa các tệp vì nó trở nên nhanh hơn so với việc chờ IDE tải trọng.

Đầu tư thời gian để tìm hiểu cách sử dụng VIM tốt và bạn sẽ không bao giờ hối tiếc. Tôi muốn nói nó tương đương với việc học kiểu chạm.


3
Câu trả lời này có lẽ là tính năng hữu ích nhất cho Vim, nó cũng là một trong những duy nhất. Bất cứ điều gì được lập trình cho Vim cũng có thể dễ dàng được áp dụng cho IDE, tất cả chỉ là xử lý văn bản ...
Tamara Wijsman

4
+1 Trong khi tôi là người sùng đạo emacs, lập luận tương tự cũng được áp dụng. Các IDE hiện đại quá xa "đồ họa", đối với các trình soạn thảo văn bản .
Orble

22

Đối với tôi :globallệnh là một ứng dụng sát thủ. Nó sẽ thực thi các lệnh vim tùy ý trên bất kỳ dòng nào khớp (hoặc không khớp) với biểu thức chính quy.

Dưới đây là một số ví dụ:

Hành vi mặc định là liệt kê ra mọi dòng khớp, vì vậy:

:g/TODO:/

sẽ liệt kê mọi dòng có chứa văn bản "TODO:"

thay đổi 'Mickey' thành 'Minnie' trên bất kỳ dòng nào có chứa từ 'Chuột'

:g/Mouse/ s/Mickey/Minnie/

Các lệnh có thể có phạm vi riêng của chúng, vì vậy, lệnh này sẽ xóa khỏi mọi dòng với "TODO:" sang dòng trống tiếp theo:

: g / TODO: /., / ^ $ / d

Sử dụng: g! để thực thi trên mọi dòng KHÔNG khớp với regex, ví dụ: thay thế "emacs" bằng "vim" ngoại trừ trên các dòng có chứa từ "hút":

:g!/sucks/ s/emacs/vim/

Thủ đoạn tuyệt vời với lệnh toàn cầu! Tôi chưa bao giờ nghĩ đến việc sử dụng chúng như thế.
Xavier T.

Eclipse hỗ trợ tìm kiếm regex của các tệp, dưới dạng các tệp riêng lẻ, dự án hoặc trên các dự án trong cùng một không gian làm việc. Regex thay thế cũng được hỗ trợ ở một mức độ nào đó, nhưng tôi tin rằng vim có khả năng regex mạnh hơn nhiều.
Thomas Owens

16

Tôi thấy khả năng xóa mọi thứ ở giữa một tập hợp các biểu tượng được ghép nối vô cùng hữu ích. Ví dụ, khá thường xuyên, tôi sẽ thấy mình muốn thay thế một chuỗi trong mã. Vì vậy, di"trong khi con trỏ ở trong khối sẽ xóa chuỗi, trong khi vẫn giữ ""nguyên và đặt con trỏ ở giữa hai ký tự trích dẫn. da"làm điều tương tự, nhưng cũng xóa các ký tự trích dẫn.


12
Thậm chí tốt hơn, ci"xóa và đặt con trỏ ở chế độ chèn để bạn có thể bắt đầu viết ngay lập tức.
Konrad Rudolph

9

'Hoàn thành chế độ chèn từ khóa'. Ctrl-P và Ctrl-N trong chế độ chèn để tìm kiếm qua văn bản để thử và hoàn thành bất kỳ tên biến nào bạn đang nhập. Tôi chưa bao giờ thấy điều này trong bất kỳ IDE nào khác và tôi thực sự nhớ nó. Hoàn thành mã trong IDE không giống nhau.


2
Bạn cũng có hoàn thành mã thích hợp nếu bạn muốn, sử dụng omni-perfect. ^X^Oomni-hoàn thành trong chế độ chèn, nếu bạn đã bật nó. Nhưng bạn nói đúng, tôi thấy mình sử dụng hoàn thành từ khóa nhiều hơn so với hoàn thành.
Chinmay Kanchi

@Chinmay: Tôi nghĩ bạn có nghĩa là "thích hợp" ngược. Hoàn thành mã đúng hoàn thành bất cứ điều gì bằng cách sử dụng nguyên tắc địa phương, ngay cả khi bạn đang viết văn bản thay vì mã.
ninjalj

SlickEdit có một tính năng tương tự; và nó rất giống IDE
user281377

8
Tôi hoàn toàn không đồng ý. Các IDE hiện đại (Visual Studio, Eclipse, Nhận) có một loại hoàn thành mã mà các đối thủ (và trên thực tế vượt qua!) Ctrl-N một cách dễ dàng . Nếu bạn chưa thấy điều này trong IDE, hãy xem lại các phiên bản hiện tại. Và Omni-Complete không may không hoạt động đúng.
Konrad Rudolph

8

Một tính năng khác tôi thấy vô cùng hữu ích là khả năng thay đổi thụt đầu dòng. :15,30>>thụt lề tất cả các dòng từ 15-30 (bao gồm) hai lần, trong khi :15,30<<thụt lề các dòng giống nhau hai lần.


Mặc dù tôi yêu thích tính năng này, nhưng hầu hết các IDE đều có khối thụt lề (và cống hiến).
Sean McMillan

Tôi thấy =chỉ là, nếu không, hữu ích hơn <<>>.
greyfade

6

lệnh dd (xóa dòng hiện tại). Tôi sử dụng cái này rất nhiều.

Ngoài ra, có thể gõ một cái gì đó như 3dd và xóa 3 dòng tiếp theo là điều tuyệt vời. Tôi chưa bao giờ thấy điều này trong một trình soạn thảo khác = D


Netbeans gần như có điều này, ^ X không có lựa chọn nào sẽ cắt dòng hiện tại.
Alan Pearce

@Alan: Không, NetBeans có jVi :)
dr Hannibal Lecter

^ K xóa dòng và ^ u3 ^ k sẽ xóa 3 dòng trong emacs. shift-xóa làm tương tự trong studio hình ảnh.
Raoul

Alan: dd cũng cắt dòng hiện tại theo nghĩa đó có thể được chèn bằng p sau
user281377

3
@Raoul, chúng tôi biết có một loạt emacs gồm n tổ hợp 3 phím để sao chép mọi lệnh vim - vẫn vậy, 3dd là thơ.
cbrandolino

6

Các clệnh. Ví dụ, ci"để thay đổi bên trong dấu ngoặc kép. cwđể thay đổi từ. Rất nhiều thủ thuật tiện dụng với nó.


5

Các .lệnh. Nó lặp lại lệnh cuối cùng.


+1 cho điều này và cho tất cả các chức năng liên quan đến vĩ mô khác.
P Shved

3

Esc ! }sẽ loại bỏ đoạn hiện tại sang bộ lọc dòng lệnh như fmthoặc wchoặc whichtrả kết quả cho trình chỉnh sửa.


3

Truy cập nhanh vào dòng lệnh. CTRL + Z hoặc: wqa sẽ giúp tôi nhận được một dòng lệnh trong chưa đầy 1 giây mà không cần rời tay khỏi bàn phím.


1
+1 Một chút cuối cùng đó là phần quan trọng cho hầu hết tất cả các lợi ích: không cần dùng tay rời khỏi bàn phím
Orbled

... Hoặc :!/bin/bash. Tôi sử dụng :!khá thường xuyên.
greyfade

Tôi thường sử dụng:sh
David Brown

3

Rằng tôi có thể sử dụng hjklđể di chuyển con trỏ mà không phải rời khỏi homerow của bàn phím. Tôi có hầu hết các chương trình (như trình đọc PDF), cho phép bạn thay đổi các phím bấm, được đặt để sử dụng các phím di chuyển Vim để cuộn, v.v.


1

Điều này khá khó để trả lời, do phần nào sự mơ hồ của câu hỏi và phần nào do thực tế là IDE khác nhau, và nhiều tính năng cung cấp các tính năng mà người khác không có (và thực tế là tôi chỉ là một vài trong số họ).

Tuy nhiên, những gì tôi tin rằng phân biệt Vim từ các biên tập viên khác (vâng, ngay cả Emacs, trên cái này) là nó thực sự là một biên tập viên tuyệt vời . Tôi đã đi qua thời gian, đã sử dụng nhiều biên tập viên và có thể nói một cách trung thực rằng rất ít người đi kèm với một bộ tính năng hoàn chỉnh như vậy để thao tác văn bản, giống như Vim.

Ví dụ, phong cách thao tác văn bản của tôi, bao gồm rất thường xuyên sử dụng (dòng / lựa chọn một vài dòng) và di chuyển (dòng / lựa chọn một vài dòng) lên xuống, từ lâu tôi đã xác định các phím tắt nhanh. Tôi nhớ những tính năng đó trong hầu hết các IDE (mặc dù tôi đã nghe ReSharper cho VS có cái gì đó tương tự).


1

Bạn có biết rằng có một plugin vi cho nhật thực không? Nó có giá 15 euro (20 đô la Mỹ) nhưng nó rất đáng giá. Không còn ddở giữa một tài liệu, và thiếu tất cả những điều hữu ích nhỏ bé.

Có lẽ hơi lạc đề nhưng tôi nghĩ nó đáng để chỉ ra.


0

Tùy thuộc vào ngôn ngữ bạn đang lập trình, gắn bó với ide hoặc nhận ide cung cấp hầu hết các phép tái cấu trúc mà bạn có thể tìm thấy, hãy chia sẻ lại cho studio hình ảnh nếu bạn đang làm c #, intellij cho java hoặc hỗ trợ trực quan cho studio trực quan, tối đa các phép tái cấu trúc trong nhật thực hoặc netbeans.

Chúng ta nên chuyển từ thao tác văn bản sang thao tác mã, các công cụ tái cấu trúc cung cấp cho bạn khả năng đó. Nếu vim không cung cấp cho bạn tất cả các tính năng tốt, tôi sẽ không thực sự muốn đối phó với trình soạn thảo văn bản nữa


3
Điều này là khá nhiều điều vô nghĩa. Đúng, tái cấu trúc là một công cụ quan trọng, nhưng mã không tự viết. Một biên tập viên tốt văn bản góp phần xa hơn đến năng suất của một lập trình viên hơn là một công cụ tốt refactoring.
Chinmay Kanchi

-1

Chọn cột bảng

Điều này dường như không có trong các IDE phổ biến và nếu có thì chúng sẽ được giấu kỹ. Điều này thực sự tiện dụng để kiểm tra regex dựa trên một cột trong tệp dữ liệu CSV.


-3

Hầu hết các IDE không cho phép bạn chia màn hình. Tôi thích tính năng đó trong VIM.


5
Hầu hết các IDE không? Tôi nghĩ rằng hầu hết thực sự làm như vậy, ít nhất là những người mà tôi đã sử dụng.
Anto

Bạn có thể cho một số ví dụ?
projecktzero

1
Hầu hết các IDE xử lý chia màn hình khác với Vim / Emacs. Họ làm điều đó với các tab thường. Đây là những thao tác khó hơn / không thể thao tác bằng bàn phím (so sánh việc mở 50 tệp trong Emacs so với mở 50 tệp trong Eclipse và bạn sẽ nhanh chóng thấy Emacs giành chiến thắng).
jsternberg

Hầu hết các IDE có màn hình chia nhỏ không cung cấp các phương pháp dễ dàng điều hướng / điều chỉnh a-la<C-w>
Wayne Werner
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.