Як перемістити курсор до певного рядка та стовпця?


81

:30 перемістить курсор на початок рядка 30.

Як я можу сказати Vim розмістити курсор у рядку y, стовпець x? Чи можливо це без використання клавіш зі стрілками або h, j, k, lключі?

У мене запущена версія Vim 7.3.429.

Відповіді:


126

Спробуйте число, за яким йде трубка, щоб дістатися до вказаного стовпця в цьому рядку.

80| повинні привести вас до позиції 80 у цьому рядку.

EDIT: Якщо ви хочете перейти до певної позиції x, y, я не впевнений у цьому.


Дякую, я забув додати, що також, використовуючи вашу пропозицію, я отримую E16: Недійсний діапазон> wc temp.txt 3 80 454 temp.txt
pacv

63
Він означає 80|в звичайному режимі, ні :80|. Таким чином, якщо ви хочете отримати координату X, Y (наприклад, 42,80), ви можете це зробити 42G80|. Якщо ви хочете зробити це в режимі командного рядка, ви можете це зробити :norm 42G80|.
Коннер

Дякую, Коннер. Я також не був впевнений, як зробити точний X, Y!
WebDevNewbie

@Conner Мені подобається ваш коментар, чи можете ви перетворити свій коментар на відповідь, щоб я був виднішим?
SebMa

84

Не впевнений, що це якось зручніше, але ви можете викликати cursorфункцію безпосередньо:

:cal cursor(30, 5)

перейде до рядка 30, стовпець 5.


4
більше натискань клавіш, ніж: 30 <CR> 80 |, але здорово знати, що є функція курсору!
Ларрі

2
Це рішення особливо приємне в поєднанні з +...опцією командного рядка: воно дозволяє сценарію, що викликає vim, точно розміщувати курсор.
cmaster - відновити моніку

Це особливо корисно при написанні сценарію Vim.
jdhao

26

У командному режимі:

Введіть число, за яким слідує G (верхній регістр), щоб перейти до цього номера рядка.
Приклад: 30G переходить до рядка 30.
Приклад: G переходить до останнього рядка буфера.

Введіть число, за яким | (труба), щоб перейти до цього стовпця в поточному рядку.
Приклад: 80 | переходить до стовпця 80.

Отже: 30G80 | переходить до рядка 30, стовпець 80.


1

Ще один варіант використання execute <line_num>. Наприклад,

function GotoLine(line)
     execute a:line
endfunction
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.