Di chuyển con trỏ đến cuối tập tin trong vim


409

Khi tôi muốn con trỏ đi đến cuối tệp (tức là cuối dòng cuối cùng) trong Vim, tôi phải gõ sáu tổ hợp phím:

<ESC>G$a- dịch thành ESC+ Shiftg+ Shift4+ atrên bố trí bàn phím của tôi.

Làm thế nào tôi có thể làm điều này hiệu quả hơn?

Vì tôi thường xuyên làm việc trên nhiều máy khác nhau, tôi không thể luôn thay đổi .vimrc, vì vậy tôi đang tìm kiếm câu trả lời mà không phải chỉnh sửa hoặc tạo tệp đó.


8
Chỉ muốn chỉ ra, các lệnh bạn đang hiển thị nên được trình bày như sau : <esc>G$a, bạn hiển thị sự thay đổi bằng cách viết hoa chữ cái. Và bạn hiển thị $thay vì shift + 4, vì cho dù bàn phím chức năng của phím này ( $) sẽ không thay đổi, nhưng nếu bạn thực hiện shift + 4 thì ý nghĩa có thể thay đổi. :)
greduan

3
@Eduan Tôi thường đồng ý, nhưng trong trường hợp này, nhấn phím thực tế cũng có liên quan. Tôi đã thêm cả hai :-)
timss

@Eduan Đối với câu hỏi về hiệu quả, các lệnh thực tế không quan trọng. Các tổ hợp phím làm. Và vì có sự khác biệt lớn về cách bố trí bàn phím giữa các ngôn ngữ, tôi không biết vị trí $của bàn phím Hoa Kỳ ở đâu và có lẽ người Mỹ nhập lệnh chỉ $là một lần nhấn phím. Tôi muốn thể hiện rõ ràng rằng đối với tôi (với bàn phím tiếng Đức), đó là hai lần nhấn phím.

1
@ gì IC. Tôi có thể hiểu điều đó. Chỉ muốn chỉ ra nó trong tương lai bạn biết. :)
greduan

Câu trả lời:


410

Không cần phải rõ ràng đi đến cuối dòng trước khi làm a, sử dụng A;
Nối văn bản ở cuối dòng [đếm] lần

<ESC>GA


3
Nếu bạn muốn ở chế độ bình thường, hãy thử G)(hoặc <ESC>G)nếu bạn đang ở chế độ chèn và muốn kết thúc ở chế độ bình thường so với ký tự cuối cùng). Cùng một số lần nhấn phím, nhưng để kết thúc ở chế độ bình thường thay vì chế độ chèn. Thỉnh thoảng tôi thấy điều này hữu ích khi tôi muốn chạy một số lệnh bình thường ở từ cuối cùng thay vì lệnh chế độ chèn hoặc chỉnh sửa.
Alejandro

1
@Alejandro Trong khi hữu ích, )di chuyển về [count]phía trước câu và do đó sẽ không đi đến cuối dòng nếu ví dụ dòng cuối cùng là This is a test. Foo bar.. Nó sẽ làm việc cho rất nhiều mã, mặc dù thường không được coi là câu và do đó sẽ đi đến cuối cùng.
timss

Nếu bạn dự định viết dòng tiếp theo, <ESC> G osẽ thực hiện quay lại vận chuyển và đưa bạn vào chế độ chèn trên dòng tiếp theo (ở cuối tệp), tiết kiệm thêm một vài lần nhấn phím.
broc.seib

1
Ngoài ra nếu bạn không muốn chuyển sang sử dụng chế độ chèn G$.
BladeMight

498

Điều này nhanh hơn. Chỉ cần sử dụng cái này

:$

16
Điều này không di chuyển đến cột cuối cùng chỉ đến dòng cuối cùng
Rajeshwar

6
Nếu bạn chỉ muốn nhanh chóng đi đến cuối tập tin và các phím tắt trên bàn phím của bạn bị rối, đây là lệnh đúng. Cảm ơn!
joemar.ct

9
: $ + Kết thúc sẽ làm điều đó trong trường hợp đó.
karthik

1
Điều này đòi hỏi <ENTER> ở cuối cũng như vẫn cần phải đi đến cuối dòng khiến nó không nhanh hơn.
Alejandro

1
: $ không lừa! đi đến cuối tập tin như câu hỏi đã hỏi! cảm ơn
Sijan Shrestha

130

Nhấn Escvà sau đó nhấn: Shift+G


3
Điều này đi đến đầu của dòng cuối cùng, không phải là kết thúc của tập tin.
Jordan Chạy

5
cái này đi đến cuối tập tin cho tôi , và cũng là một keybind dễ dàng
Jacob Garby

G giữ số cột giống nhau (nếu có thể) và di chuyển đến dòng cuối cùng. Jacob có lẽ ở cuối hàng và Jordan ở phía trước khi chạy lệnh.
run_the_race

39

Để bắt đầu, không cần phải trả lại. G$sẽ làm. Và bạn đang hiểu lầm bằng cách đếm <Esc>atrong độ dài của lệnh chế độ bình thường.

Tuy nhiên, bạn có thể sử dụng Ctrl+ Endnếu bạn thích.


8
đó làCtrl-END
zmo

Tôi không có End-Key trên bàn phím của tôi (nếu đó là ý bạn).

Trên thực tế, câu trả lời của chương trình TIMSS mà tôi cũng đếm <ESC>a, bởi vì anh ta hay cô ta biết một cách để thay thế Shift+$, avới A.

1
@ hầu hết các bàn phím máy tính xách tay hiện nay đều có phím home / end được đặt lên / xuống / trái / phải cùng với Fn nếu chúng không có phím home / end chuyên dụng
phuclv

22

Tôi nghĩ câu hỏi là "Di chuyển con trỏ đến cuối tập tin trong vim"?

Cuối tập tin: Esc+ G
Bắt đầu tập tin Esc+ g(hoặc ggnếu bạn đã ở trong vùng lệnh)


21

Cách tốt nhất để đi đến dòng cuối cùng của tệp là với G. Điều này sẽ di chuyển con trỏ đến dòng cuối cùng của tệp.

Cách tốt nhất để đi đến cột cuối cùng trong dòng là với $. Điều này sẽ di chuyển con trỏ đến cột cuối cùng của dòng hiện tại.

Vì vậy, chỉ bằng cách làm G$bạn đến cuối tập tin và dòng cuối cùng.

Và nếu bạn muốn vào chế độ chèn vào cuối tập tin thì bạn chỉ cần làm GA. Bằng cách này, bạn đi đến dòng cuối cùng của tệp và nhập chế độ chèn bằng cách nối thêm vào cột cuối cùng. :)



11

Nếu bạn dự định viết dòng tiếp theo, ESCGosẽ thực hiện quay lại vận chuyển và đưa bạn vào chế độ chèn trên dòng tiếp theo (ở cuối tệp), tiết kiệm thêm một vài lần nhấn phím.


6
  • Ctrl + Home = Nhảy để bắt đầu tập tin
  • Ctrl + End = Nhảy đến cuối tập tin

3

Việc này nhanh hơn:

<ESC>GA

5
Tại sao đăng một câu trả lời trùng lặp, đặc biệt là khi nó không giải thích A?
hẹn giờ

3

Bạn có thể ánh xạ nó tới một khóa, ví dụ F3, trong .vimrc

inoremap <F3> <Esc>GA

2
Trong khi có thể, đây thường là một ý tưởng tồi. Thay vào đó nhắm đến bộ nhớ cơ và sử dụng GAhoặc G$.
hẹn giờ

Tôi vẫn chiến thắng với 1 lần nhấn phím :) Trên một lưu ý nghiêm trọng hơn, nếu bạn thực sự cần một cái gì đó nhanh chóng trong vim, học cách .vimrc là hữu ích.
Tim

Sẽ rất tốt nếu có một ví dụ bản đồ hoàn chỉnh thay vì bảo OP đi tìm nó. Vì nếu bạn không thể tìm thấy thì OP phải làm thế nào?
FDinoff

1
Bạn không "chiến thắng" bất cứ điều gì vì bạn phải rời khỏi nhà của mình. Ngoài ra, bạn không thể sử dụng điều này trên ai đó elses config hoặc thậm chí vi, nếu bạn tình cờ sử dụng nó. Bạn thực sự không tiết kiệm bất cứ lúc nào. Nếu bất cứ điều gì, sử dụng C-endnhư được đề cập bởi hobbs.
hẹn giờ

Tôi đồng ý với các ý kiến ​​ở đây, nhưng tôi đã dọn sạch bản đồ cho bạn
D. Ben Knoble

0

Tôi đã tìm cách di chuyển con trỏ đến cuối dòng và sau đó chỉnh sửa trên thiết bị đầu cuối mac, đây là cách nó hoạt động với tôi. Thoát khỏi chế độ chỉnh sửa của bạn, nhập g_ (đó là 'g' rồi gạch dưới không có dấu hai chấm ở phía trước), sau đó chỉ cần nhấn phím 'a' để bạn có thể "thêm" mã vào tập lệnh của mình


Có lẽ bạn đang tìm kiếm A?
D. Ben Knoble

Tôi đã thử A nhưng nó không hoạt động
Xinyi Xiang

điều đó thật kỳ lạ, Avề cơ bản tương đương với$a
D. Ben Knoble

0

Một cách khác:

:call cursor('.',strwidth(getline('.')))

Điều này có thể hữu ích nếu bạn đang viết một chức năng. Một tình huống khác là khi tôi cần mở một mẫu cụ thể và nhảy đến cuối dòng đầu tiên, tôi có thể làm:

vi +"call cursor('.',strwidth(getline(1)))"  notetaking_template.txt

Những điều trên cũng có thể được thực hiện với

vi +"execute ':normal! $'" notetaking_template.txt

Xem thêm:

vim - Nhận độ dài của dòng hiện tại


0

Nếu bạn muốn dán một số nội dung clipboard vào cuối loại tệp:

:$ put +

$ ............ last line
put .......... paste 
+ ............ clipboard
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.