Ответ 1
Я просто набираю Ctrl + O после замены, чтобы вернуть предыдущее местоположение.
В Vim, когда я это делаю:
:%s/foo/bar/g
Он заменит все появление "foo" на "bar" во всем документе. Когда он завершится, курсор переместится в последнюю позицию, где "foo" был заменен на "bar".
Как запустить :%s/foo/bar/g
, если курсор не покинул исходную позицию перед выдачей этой команды?
Есть ли какая-то опция, которую я могу установить в файле .vimrc
?
Я просто набираю Ctrl + O после замены, чтобы вернуть предыдущее местоположение.
Когда выполняется команда :substitute
, до того, как будут выполнены фактические замены,
позиция курсора сохраняется в списке переходов. Чтобы вернуться к
перед самым последним прыжком можно использовать нормальный режим ``
или ''
команды. В то время как первый прыгает точно в сохраненное положение, последний
перемещает курсор на первый непустой символ в строке, где
позиция расположена.
Итак, чтобы быстро вернуть курсор в исходное местоположение, введите ` ` после завершения команды подстановки.
Чтобы объединить подстановку и перемещение курсора в одну команду, выполните
:%s/pat/str/g|norm!``
или, если достаточно перепрыгнуть не к точной позиции, а только к ее строке,
:%s/pat/str/g|''
Как показано выше, ''
можно использовать вместо norm!''
во втором
из-за синтаксиса диапазона команд Ex (см. :help :range
).