vi командний рядок, рядок переходу та стовпець


17

Я давно змішую використання emacsта vi( vim). Кожен з них має свою перевагу. Я аналізую вихід помилки з компіляції, як процес, і отримую номер рядка та стовпця, але я можу використовувати лише emacsдля прямого переходу до рядка та стовпця:

emacs +15:25 myfile.xml

у viмене є лише номер рядка (відповідно до сторінки man)

vi +15 myfile.xml

Є можливість перейти курсор позиції за шаблоном ( vi +/pattern myfile.xml), який я ніколи не працював. Але це не допоможе мені, оскільки шаблон завжди не є першим явищем у файлі.

Як я можу почати, viщоб він перейшов до стовпця 25 у рядку 15 мого файлу? Чи можу я щось зробити з -cваріантом?


3
Так як ви позначено Vim, ти розглянув quickfixсистему, яка запускає компілятор зсередини Vim, розбирає висновок помилок, заповнить список помилок (переміщаючись з :cp, :cn, :clкоманд), і позиціонує курсор на перший?
Випадково832

Якщо ви відкриєте файл in vi та введіть :15його, перейдете до рядка 15 .. Сподіваюся, що це вам допоможе
код ніндзя

Відповіді:


17

Ви можете використовувати:

vi '+normal 15G25|'  myfile.xml

2
пояснення: більшості команд (тобто більшості букв) в vi може передувати число (або діапазон), щоб змінити його поведінку за замовчуванням або повторити його (або застосувати його до певного діапазону). Всередині vi в командному режимі ви можете 15Gперейти до рядка 15 та 25|перейти до колу 25. І Кріста показує, як це зробити з командного рядка.
Олів'є Дулак

7

За допомогою плагіну файлових рядків ви можете просто додати рядок і стовпець до імені файлу, як при виклику Vim, так і всередині таких команд :edit:

vim myfile.xml:15:25

Добре знати, що це існує, але я думаю, що я використовуватиму відповідь, яка не потребує додаткового плагіна
Домінік

@Dominique Ви також можете виконувати vim myfile.xml +15рядки без плагіна, але не стовпець, наскільки я знаю
Izkata

5

просто для розваги є те, -c 'normal 14j24l'що поставить вас на рядок 15 символу 25


4

Я не знаю про -cваріант, але ви повинні вміти:

vi '+cal cursor(15,25)' myfile.xml

(переконайтесь, що ви цитуєте через дужки ())


cursor()використовує байт-індекс для стовпця, але зазвичай це кількість символів.
Інго Каркат

@IngoKarkat Це дійсно має значення? Текст - UTF-8.
Домінік

2
Це має значення для символів, що не належать до ASCII, які представлені більш ніж одним байтом. Крім того, символи Tab та керування зазвичай займають більше одного стовпчика відображення.
Інго Каркат

2

Варто зазначити:

-c command 

Виконайте дану команду ex після запуску. Для vi дозволений лише один -c варіант ; Vim приймає до 10. Старіша форма цієї опції, +commandвсе ще підтримується.

У +commandвикористання однакове ex commandобмеження при використанні vi.

The +/patternтакож обмежений однією командою з vi.

(взято від vim та колишнього редактора )


1

Ви можете додати такий код у свій vimrc. Коли ви повернетесь у свій файл, автоматично поверніться до старого положення:

if has("autocmd")
  au BufReadPost * if line("'\"") > 1 && line("'\"") <= line("$") | exe "normal! g'\"" | endif
endif
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.