Команда `: cw` в Vim: как избежать автоматического перехода к первой ошибке?

2016
xuhdev

В Vim :cwкоманда показывает окно быстрого исправления, если есть какие-либо ошибки, и позволяет курсору перейти к первой распознанной ошибке в окне быстрого исправления (не в буфере, где есть ошибка). Есть ли команда выполнить ту же работу, но не перейти к первой ошибке, а остаться там, где она была?

1

1 ответ на вопрос

2
romainl

Если ваша проблема в том, что окно быстрого исправления захватывает фокус из окна, в котором вы сейчас работаете, решение довольно простое. Добавьте эти строки в ваш ~/.vimrc:

augroup quickfix autocmd! autocmd Syntax qf wincmd p augroup END 

Это не :cw[indow]команда, которая перемещает ваш курсор на первую совпадающую строку в буфере, это команда, которая создала список, отображаемый в окне быстрого исправления, который делает это.

Предположим, у вас есть:

foo foobar foobarbaz 

и вы делаете:

:vim foo % 

Ваш курсор автоматически позиционируется на первой соответствующей строке, без :cw.

Если вы делаете:

:vim foo % | cw 

Ваш курсор по-прежнему расположен на первой совпадающей строке, поэтому поведение не связано с :cw.

Но если вы делаете:

:vim /foo/j % | cw 

Ваш курсор остается на месте. См :help :vimgrep.

Вы должны проверить документацию команды, которую вы используете, чтобы увидеть, имеет ли она эквивалент этого jфлага.

Команда `: make` имеет эквивалентный флаг (`! `), однако, если я запускаю`: make! | cw`, он все равно автоматически прыгает. Вы можете это объяснить? xuhdev 9 лет назад 0
ОК, я думаю, что у нас здесь недоразумение. Я имею в виду, команда `: cw` автоматически позволяет курсору переходить к первой строке ошибки окна быстрого исправления, а НЕ в буфере. xuhdev 9 лет назад 0
Каково было бы ваше желаемое поведение, тогда? Переходите к последней строке в списке? Переход к строке в списке, ближайшей к текущей строке в буфере? Собираетесь на произвольную линию? Случайная линия? Не кажется ли вам логичным начать исправлять ошибки с ... первой? romainl 9 лет назад 0
Мое желаемое поведение - создать это новое окно быстрого исправления, но курсор остается там, где он есть. xuhdev 9 лет назад 0
Итак, ваша проблема в том, что окно quickix ориентировано на `: cw`, но вы хотите, чтобы фокус оставался в текущем окне, верно? romainl 9 лет назад 0
Пожалуйста, смотрите мое редактирование. romainl 9 лет назад 0