«поиск достигнет ТОП, продолжая НИЖНЯЯ», будет отображаться всякий раз, когда ваш поиск обтекает документ, если у вас нет s
в вашем shortmess
(:help 'shortmess'
).Это всегда будет происходить, если вы будете искать в обратном направлении с первой строки, но не произойдет, если вы будете искать в обратном направлении.
Могут быть и другие сообщения;проверьте :messages
, чтобы увидеть, что все, что появилось.«Нажмите ENTER или введите команду для продолжения» (:help hit-enter
) появляется, когда вы не можете разместить все сообщения на высоте командной строки (:help 'cmdheight'
), и Vim боится, что вы что-то пропустите.
Я полагаю, что при поиске в обратном направлении Vim отображает ваше имя файла, а затем выводит запрос обтекания;и ваш cmdheight
установлен на 1
.
Вы можете попытаться избежать этого либо с помощью set cmdheight=2
(освободить место для обоих сообщений), либо с помощью set shortmess+=s
(не отображать обтекание поиска)сообщение) в вашем vimrc.Третьим способом было бы явное предотвращение сообщения обтекания поиска только в этом случае, в отличие от установки глобальной опции (:help :silent
): vim myfile.py -c "silent ?print"
Вы правы в том, что -c
выполняетсябывшая команда;-c /print
на самом деле делает :/print
, а не /print
(:help :/
), поэтому вы приземляетесь в начале строки, а не в матче.
Вы можете обойти это явноиспользуя поиск в обычном режиме (help :normal
).Обратите внимание, что каждая команда, переданная на :normal
, должна быть завершена, иначе она будет отменена, поэтому нам также необходимо включить заключительный ключ Enter:
vim myfile.py +"norm /print^M"
, где ^M
равно Ctrl-V Введите (я также использую +
в качестве более короткого эквивалента опции командной строки -c
: :help +cmd
.) Если вам нужно написать скрипт и, таким образом, вставить литерал ^M
не очень хорошо, вы также можете использовать это (:help :execute
), чтобы иметь возможность использовать имя ключа Vim (:help key-notation
):
vim myfile.py +'exe "norm /print\<cr>"'
Вместе с предыдущим выпуском оEnter, вы можете использовать следующую комбинированную команду для поиска последней print
, приземлившись прямо на нее и не нажимая Enter.Это немного чудовищно, поэтому вы можете захотеть создать функцию bash или даже функцию Vim, если вам захочется использовать ее часто:
vim myfile.py +'exe "sil norm ?print\<cr>"'
Здесь вы можете использовать функцию Vim.просто добавьте в свой vimrc:
function! g:norm_silently(what)
exe "sil norm " . a:what . "\<cr>"
endfunction
command! -nargs=1 F call g:norm_silently(<q-args>)
, который затем можно использовать как:
vim myfile.py +'F ?print'