Скрипт Vim захватывает число, введенное пользователем в ответ на "Введите номер и <Enter> (пусто отменяет):"
Например, если пользователь пытается перейти к тегу и использует следующую команду:
:tjump "some_function"
Vim покажет список возможных совпадений тегов. Есть ли способ "захватить" то, что вводил пользователь?
Пример в функции:
function! GoToTag ()
let l:search_tag = expand('<cword>') " this will capture the word under the cursor
exe 'tjump' l:search_tag
"""" capture the number the user puts in
Моя цель - иметь возможность перейти к файлу, который выбирает пользователь, но если он не существует, извлеките этот файл из репозитория и затем перейдите к нему. Переход к файлу автоматически после его проверки без запроса повторного ввода пользователем этого номера оказывается трудным:
function! GoToTag ()
try
let l:search_tag = expand('<cword>') " Get the word under the cursor
exe 'tjump' l:search_tag " go to tag, list options if tag is in multiple locations
catch /^Vim(tjump):E429:/ " catch the missing file error if file doesn't exist (not synced)
""" sync the file the user wanted to jump to using whatever repository command applies to you
""" go to that file and line corresponding to the user's original choice
entry
endfunction
1 ответ
Нет, вы можете только наблюдать за эффектом (перехода к тегу) или отменить выбор пользователя, захватить вывод и повторно реализовать эхо и запросить себя, например:
let search_tag = expand('<cword>')
redir => commandOutput
silent! execute 'tjump' search_tag
redir END
echo substitute(commandOutput, '\n[^\n]*$', '', '') " Remove last query line; we'll duplicate that with input().
let answer = input('Type number and <Enter>: ')