Tôi biết cách thường di chuyển xung quanh trong chế độ lệnh, cụ thể là nhảy đến các dòng, v.v ... Nhưng lệnh nào để nhảy đến cuối dòng mà tôi hiện đang làm?
vimtutor
là tuyệt vời. Có lẽ họ không biết về nó?
Tôi biết cách thường di chuyển xung quanh trong chế độ lệnh, cụ thể là nhảy đến các dòng, v.v ... Nhưng lệnh nào để nhảy đến cuối dòng mà tôi hiện đang làm?
vimtutor
là tuyệt vời. Có lẽ họ không biết về nó?
Câu trả lời:
Chỉ cần phím $ (ký hiệu đô la) . Bạn có thể sử dụng Ađể di chuyển đến cuối dòng và chuyển sang chế độ chỉnh sửa (Nối). Để nhảy nhân vật phi trống cuối cùng, bạn có thể nhấn gsau đó _phím.
Ngược lại Alà I(Chế độ chèn ở đầu dòng), như là một bên. Chỉ nhấn ^sẽ đặt con trỏ của bạn vào ký tự không phải khoảng trắng đầu tiên của dòng.
g_
g_
biến thể hữu ích hơn vì nó không bao gồm các ký tự trống
Như nhiều người đã nói:
nhưng cũng:
|
lệnh ống có thể mất một số đếm, ví dụ 3 | để nhảy đến cột thứ ba.
g _ đi đến ký tự không phải khoảng trắng cuối cùng.
g $ đi đến cuối dòng màn hình (khi một dòng đệm được bọc trên nhiều dòng màn hình)
b
đi đến đầu của từ trước đó không giống nhau chút nào. Nó gần tương đương với $ge
.
_
và g_
để trực quan / yanking, $
cũng sẽ sao chép / xóa ký tự dòng mới (LN).
g_
là cách duy nhất tôi tìm thấy để đi đến cuối dòng thực sự.
$
đi đến cuối hàng ngay cả khi quấn lấy tôi. Tôi biết không có thiết lập để điều chỉnh hành vi của nó. Có lẽ nó đã được ánh xạ lại bởi .vimrc của bạn g$
?
Câu hỏi chính - cuối dòng
$ đi đến cuối dòng, vẫn ở chế độ lệnh
A Đi đến cuối dòng, chuyển sang chế độ chèn
Ngược lại - bắt đầu dòng (về mặt kỹ thuật là ký tự không phải khoảng trắng đầu tiên )
^ đi đến đầu dòng, vẫn ở chế độ lệnh
I (chữ hoa i) đi đến đầu dòng, chuyển sang chế độ chèn
Hơn nữa - bắt đầu dòng (về mặt kỹ thuật là cột đầu tiên không phân biệt khoảng trắng )
0 (không) đi đến đầu dòng, vẫn ở chế độ lệnh
0i (số 0 theo sau là chữ thường i) đi đến đầu dòng, chuyển sang chế độ chèn
Đối với những người bắt đầu tìm hiểu vi, đây là một giới thiệu tốt về vi bằng cách liệt kê các lệnh vi cạnh nhau cho các phím tắt và phím tắt con trỏ của Trình soạn thảo GUI GUI điển hình.
I
không phải là , 0
nhưng ^
cả hai I
và ^
đi đến ký tự không phải khoảng trắng đầu tiên của dòng nhưng 0
đi đến cột số không (như tên của nó ngụ ý).
0
sẽ là gì? (đi đến ký tự đầu tiên (= cột 0) của dòng và chuyển sang chế độ chèn)
0i
. :-)
Nếu dòng hiện tại của bạn bao quanh màn hình hiển thị trên dòng tiếp theo, bạn có thể sử dụng g $ để đến cuối dòng màn hình .
gw
và gq
là các lệnh định dạng lại văn bản. (xem :h gw
và :h gq
) Những gì có thể xảy ra là bạn đã làm gw{motion}
và thay đổi một số văn bản để các dòng màn hình tương ứng với các dòng thực tế.
Ký hiệu đô la: $
Trong nhiều trường hợp, khi chúng tôi ở trong một chuỗi, chúng tôi được bao quanh bởi một trích dẫn kép hoặc trong khi viết một tuyên bố, chúng tôi không muốn nhấn thoát và đi đến cuối dòng đó bằng phím mũi tên và nhấn dấu chấm phẩy ( ;
) chỉ để kết thúc dòng. Viết dòng sau trong tệp vimrc của bạn :
imap <C-l> <Esc>$a
Dòng này nói gì? Nó ánh xạ Ctrl + l tới một loạt các lệnh. Nó tương đương với việc bạn nhấn Esc(chế độ lệnh), $(cuối dòng), a(nối thêm) cùng một lúc.
vim
chắc chắn cho phép bạn làm nhiều hơn trong thời gian ít hơn nhiều với những thứ như thế này. @razor े, một điều chỉnh nhỏ sẽ là imap <C-l> <Esc>A
, điều này làm cho Ctrl + l tương đương với việc nhấn Esc
(chế độ chèn thoát), sau đó A
(nối vào cuối dòng).
inoremap <C-l> <C-o>A
Ưu điểm của phím 'Kết thúc' là nó hoạt động ở cả chế độ thường và chế độ chèn.
'$' chỉ hoạt động ở chế độ bình thường / lệnh nhưng nó cũng hoạt động trong trình soạn thảo vi cổ điển (cần biết khi nào không có vim).
Cũng lưu ý phân biệt giữa dòng (hoặc có lẽ là dòng vật lý) và dòng màn hình . Một dòng được chấm dứt bởi ký tự End Of Line ("\ n"). Một dòng màn hình là bất cứ điều gì xảy ra để được hiển thị dưới dạng một hàng ký tự trong thiết bị đầu cuối hoặc trong màn hình của bạn. Cả hai sẽ tách ra nếu bạn có các dòng vật lý dài hơn chiều rộng màn hình, điều này rất phổ biến khi viết email và như vậy.
Sự khác biệt cũng xuất hiện trong các lệnh cuối dòng.
Nếu bạn luôn thích hành vi sau, bạn có thể sắp xếp lại các phím như thế này:
:noremap 0 g0
:noremap $ g$
g_
là khoảng trắng cuối cùng của dòng vật lý . Làm thế nào về dòng màn hình?
Hoặc có câu trả lời rõ ràng: sử dụng Endchìa khóa để đi đến cuối dòng.
Tôi không thể thấy hotkey cho macbook để sử dụng vim trong thiết bị đầu cuối tiêu chuẩn. Hy vọng nó sẽ giúp được ai đó. Đối với người dùng macOS (đã thử nghiệm trên macbook pro 2018):
fn+ ← - di chuyển đến vạch xuất phát
fn+ → - di chuyển đến dòng kết thúc
fn+ ↑ - di chuyển trang lên
fn+ ↓ - di chuyển trang xuống
fn+ g - di chuyển con trỏ đến phần đầu của tài liệu
fn+ shift + g - di chuyển con trỏ đến cuối tài liệu
Đối với hai lệnh cuối đôi khi cần phải gõ hai lần.
Tôi đã quen với Home / End đưa tôi đến điểm bắt đầu và kết thúc của dòng ở chế độ Chèn (từ sử dụng trong Windows và tôi nghĩ Linux), mà Mac không hỗ trợ. Điều này đặc biệt khó chịu vì khi tôi sử dụng vim trên một hệ thống từ xa, tôi cũng không thể dễ dàng làm điều đó. Sau một số thử nghiệm và lỗi đau đớn, tôi đã nghĩ ra những .vimrc
dòng này làm điều tương tự, nhưng bị ràng buộc với Ctrl-A cho phần đầu của dòng và Ctrl-D cho đến cuối dòng. (Vì một số lý do, Ctrl-E tôi đoán là dành riêng hoặc ít nhất tôi không thể tìm ra cách để ràng buộc nó.) Tận hưởng.
:imap <Char-1> <Char-15>:normal 0<Char-13>
:imap <Char-4> <Char-15>:normal $<Char-13>
Có một biểu đồ tốt ở đây cho các mã ký tự điều khiển ASCII ở đây cho những người khác:
http://www.physics.udel.edu/~watson/scen103/ascii.html
Bạn cũng có thể thực hiện Ctrl-V + Ctrl-, nhưng điều đó cũng không dán vào những nơi như thế này.