VIM: cách đi đến dòng chính xác trên Ubuntu


87

Tôi đang sử dụng vitrên Ubuntu 12.10. Một số tệp khá dài nên khi muốn đến giữa tệp, tôi phải kéo xuống trang hoặc cuộn xuống.

Có phím tắt VIM để đi đến số dòng chính xác không?


@vim các chuyên gia. Đây có thực sự là Ubuntu- / bash- / Linux cụ thể (theo thẻ OP) không? Tôi không sử dụng vim nhiều, nhưng đối với mục đích sử dụng của mình, tôi không nhận thấy sự khác biệt nhỏ nhất giữa Ubuntu / CentOS / Suse / Windows.
Alexander Malakhov

Câu trả lời:


143
:150

sẽ đưa bạn đến dòng 150 trong vi

:1500

sẽ đưa bạn đến dòng 1500 trong vi

Theo các ý kiến ​​bạn có thể muốn thử

150G

để đi đến dòng 150. đó là ít phím bấm hơn, sau đó :150Enter nếu bạn không chắc chắn bạn đang thử dòng nào

 :set nu!

chú ý:

nếu bạn muốn luôn thấy dòng, hãy cân nhắc chỉnh sửa hồ sơ vim của bạn. Thường xuyên nhất

vi ~/.vimrc

và thêm

:set nu! 

và viết và bỏ

:wq
#or you could use :x

điều này có thể được thực hiện bên ngoài vi. Ví dụ: nếu tôi muốn xóa dòng 5000 trong tệp văn bản, tôi có thể sử dụng ngôn ngữ kịch bản. Ví dụ, sử dụng sed, nó sẽ như sau

sed -i '5000d;' inputFile.txt

xóa dòng 10 đến dòng 20 nó sẽ là

sed -i '10,20d;' inputFile.txt

chú ý -i sẽ chỉnh sửa tệp tại chỗ. Nếu không có -i, nó sẽ trở nên khó khăn. Thử nó. bạn có thể chuyển hướng stdout đến một tệp

sed '5001,$d;' inputFile.txt >> appenedFile.txt

điều này có thể có rất nhiều điều xảy ra ở đây cho bạn. điều này sẽ xóa dòng 5001 đến $. Với $ là phần cuối của tệp. >> sẽ thêm vào một tệp. trong đó as> tạo một tệp mới.

nếu bạn tò mò có bao nhiêu dòng trong một tệp, bạn có thể muốn nhập wc -l inputFile.txt

một số điều này có vẻ tầm thường một cách khủng khiếp, nhưng nếu bạn đang cố gắng chỉnh sửa một tệp có 50.000 dòng, có thể mất một phút ngắn ngủi để mở và xem qua. nơi nếu bạn biết bạn chỉ muốn xóa dòng cuối cùng, bạn có thể sử dụng sed và thực hiện nó trong một khoảng thời gian ngắn.

sed cũng có thể tìm kiếm và thay thế bên trong một tệp. Nhưng có lẽ awk, perl hoặc python cũng có thể là một giải pháp khả thi.

nhưng nhìn chung, bạn có thể muốn tìm thấy một hướng dẫn tốt về vi. hàng ngàn tồn tại. Tôi muốn tham khảo google. Có lẽ hãy tìm cho mình một VIM Cheatsheat.


Không sao, tôi đã mở rộng câu trả lời của mình một chút nhưng. Chúc may mắn
matchew

2
Ngoài ra, trong vim, bạn có thể nhập: n50% và vào giữa tệp.
Eric Fortis

1
Trong chế độ bình thường, 150Glàm tương tự như :150. Nó không nhanh hơn nhưng có thể dễ nhớ hơn.
romainl

@romainl 150gg cũng làm như vậy. Cả hai trong số đó là thực sự nhanh hơn: 150 <cr>
Randy Morris

@Randy Morris - Vâng, nó nhanh hơn, tôi đã quên tính <CR>đến.
romainl

14

Mẹo vim khác: ở chế độ lệnh

  • H lên đầu màn hình
  • M đi ra giữa màn hình
  • L đi đến cuối màn hình
  • gg đi đến dòng đầu tiên
  • G đi đến dòng cuối cùng

7

dành vài phút và bắt đầu đọc tài liệu này . Nó thưởng cho bạn về lâu dài vì hiệu quả trong việc chỉnh sửa tệp đặc biệt là cấu hình.


Link là bây giờ đã chết
Có gì trong một Google Search

6

Từ một terminal đã mở, trong bash shell, chỉ cần chỉnh sửa tệp của bạn bằng cách chạy:

$ vi +N yourfile

Trong trường hợp Nlà số dòng.

Để xem ( morehoặc less;):

$ less +N yourfile
$ more +N yourfile

Dấu hiệu +có nghĩa là lệnh để chạy khi bắt đầu . Vì vậy, nếu lệnh chỉ là một số, thì vi, lessmore, sẽ chuyển đến đây dưới dạng số dòng .

Nhưng bạn cũng có thể sử dụng /regexđể tìm lần xuất hiện đầu tiên của một chuỗi hoặc regex cụ thể:

$ less +/Error logfile
$ less -i +/error logfile      # -i Causes less's searches to ignore case
$ vi +/open.*myfile myprog...

3

Một lời khuyên khác: vì bạn chưa quen với vim nên việc chạy bộ vimtutorcó thể rất hữu ích.


6
Đây không phải chỉ là một bình luận vì nó không giải quyết câu hỏi cụ thể?
Brian Rasmussen
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.