Как я могу контролировать переходы `Ctrl-O` и` Ctrl-I` в Vimscript?

782
Annis Monadjem

Есть ли способ, которым я мог бы использовать Vimscript, чтобы пройти через список переходов Ctrl-O, Ctrl-Iи выбрать предыдущие прыжок буфера / позиции?

Любое предложение с благодарностью.

2
Как я упоминал ниже, проблема в том, что `: execute" normal \«не делает то, что я хочу, потому что он возвращается только к буферизированным буферам и не пропускает ни одного nobuflisted. Буду признателен, если кто-нибудь даст мне хотя бы подсказку с точки зрения какой-либо встроенной функции или способ воспроизвести `Ctrl-0` или` Ctrl-I` в скрипте Vim, чтобы он перепрыгивал через все буферы независимо от того, перечислены они или нет? Annis Monadjem 8 лет назад 0

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

2
garyjohn

You can execute the Ctrl-O and Ctrl-I commands within a script by using the :execute and :normal commands.

:execute "normal \<C-O>" :execute "normal \<C-I>" 

See

:help :normal :help :execute :help jump-motions 
Попробую, кажется, очень полезно. Большое спасибо! Annis Monadjem 8 лет назад 0
На самом деле, он не работает так, как мне хотелось бы, потому что Ctrl-O `Ctrl-I 'отлично работает только для буферов buflisted, но не для буферов nobuflisted и не для каждого буфера nobuflisted, который я хочу в buflisted. Итак, как бы вы тогда предложили мне найти `Ctrl-O` над буферами, не включенными в список? Или, может быть, есть встроенный список Vim или диктовка, откуда я мог бы получить список всех прыжков? Annis Monadjem 8 лет назад 0
Я не знаю, как `Ctrl-O` и` Ctrl-I` зависят от состояния буфера. Я не слишком много думал об этом. Вы можете получить список переходов, выполнив `: jumps`. Если вы хотите записать это для использования в скрипте, смотрите `: help: redir`. garyjohn 8 лет назад 0
Гариджон: спасибо за ваши комментарии. Я не уверен, понимаю ли я, как я бы использовал: redir, который сбрасывает: переход к файлу? Пожалуйста, расскажите подробнее о том, как я мог бы в скрипте Vim "перевести" файл с помощью: redir of: jump к чему-то, что могло бы позволить мне воспроизвести `Ctrl-O`,` Ctrl-I`, `Ctrl-]` и ` Ctrl-T`. Любые предложения с благодарностью. Annis Monadjem 8 лет назад 0
Я не знаю точно, чего ты пытаешься достичь. До сих пор я показывал вам кусочки, которые, возможно, вам понадобятся для решения проблемы. Я думаю, что обсуждение, которое вы начали в списке vim_use, будет более продуктивным, потому что нет прямого ответа на ваш вопрос, и обсуждение vim_use приветствуется, хотя здесь не рекомендуется. garyjohn 8 лет назад 0
Примечание `" \"` является строковым литералом для `ctrl-o`, а не просто чем-то, что` execute` магически интерпретирует. Ciro Santilli 新疆改造中心 六四事件 法轮功 6 лет назад 0