Đi đến giữa dòng trong vim


14

Tôi biết 0 đi đến đầu dòng và $ đi đến cuối, nhưng có gì ở giữa không?

Câu trả lời:


11
:call cursor(0, len(getline('.'))/2)

4
Điều này sẽ khá hữu ích nếu nó được ánh xạ, ví dụ :: nnoremap gm: gọi con trỏ (0, len (getline ('.')) / 2) <cr>
Heptite

3
virtcol ('$') / 2 là đủ.
Luc Hermitte

@Luc Hermitte: Đẹp, nhưng không chính xác là hành vi tốt nhất khi có các tab cứng.
ephemient

Đó là lý do tại sao tôi sử dụng virtcol thay vì col. :). Nhưng thực sự chúng ta nên sử dụng | và không phải con trỏ (). BTW, len () sẽ không cho kết quả tốt hơn. Hơn nữa, len sẽ đưa ra các rắc rối khác với các ký tự nhiều byte.
Luc Hermitte

8

gmsẽ làm điều đó, nhưng nó di chuyển bằng các dòng màn hình (xem :help gm). Để làm cho nó hoạt động với các dòng văn bản, người ta có thể ánh xạ lại lệnh này:

map gm :call cursor(0, virtcol('$')/2)<CR>

gm dường như di chuyển con trỏ đến giữa màn hình, nhưng nếu dòng văn bản của tôi ngắn hơn chiều dài màn hình, nó sẽ không đưa tôi đến giữa. Xin lỗi vì đã không làm rõ.
teggy

@teggy: Tôi hiểu rồi. Tôi đã sửa đổi giải pháp của mình để ánh xạ lại gm để đi đến giữa dòng văn bản. Như bạn có thể thấy, nó kết hợp các giải pháp từ phù du và Luc Hermitte.
JooMing

Như ephemient đã chỉ ra, nó vẫn có vấn đề với các tarbs cứng khi con trỏ () tính chúng là một ký tự mỗi ký tự. Hơn nữa, nó sẽ không hoạt động với các ký tự nhiều byte.
Luc Hermitte

7

Đây là một giải pháp sẽ tôn trọng hardtabs và các ký tự nhiều byte.

:exe 'normal '.(virtcol('$')/2).'|'

1

Đây là giải pháp tốt nhất mà tôi đã tìm thấy. Nhảy chính xác đến giữa dòng là không thực tế. Rất có thể bạn vẫn sẽ cần di chuyển con trỏ một vài vị trí sau khi di chuyển đến giữa. Điều gì nếu bạn có thể nhảy đến một nhân vật cụ thể? Nhiều người chỉ cần tìm kiếm nhân vật, sau đó nhấn "tiếp theo" cho đến khi họ đạt được nó. Điều này là chậm. Plugin Easy-motion cung cấp một giải pháp tốt hơn.

Yêu thích của tôi là <leader><leader>snhân vật bạn muốn nhảy đến. Easy Motion thay thế tất cả các trận đấu bằng các chữ cái khác nhau để bạn lựa chọn. Xem hướng dẫn. Đây là một plugin thay đổi cuộc sống ...

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.