2017-09-30 2 views
0

Par exemple, si un utilisateur tente de sauter à un marqueur et utilise la commande suivante:entrées de l'utilisateur du numéro de capture de script Vim en réponse à « numéro de type et <Enter> (oblitérations vide): »

:tjump "some_function" 

Vim afficher une liste des correspondances possibles. Existe-t-il un moyen de «capturer» ce que l'utilisateur a entré?

Exemple en fonction:

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 

Mon objectif est d'être en mesure de sauter dans un fichier que l'utilisateur choisit, mais si elle n'existe pas, consultez ce fichier à partir d'un référentiel, puis aller à il. Aller au fichier automatiquement après vérification sans demande que l'entrée utilisateur ce numéro à nouveau se révèle difficile:

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 
+0

Veuillez donner plus de fond; quel est votre objectif final? Lorsqu'une question concerne seulement une petite étape technique, il est difficile de fournir une bonne réponse. Si vous ne nous dites pas ** pourquoi ** vous le souhaitez, il est facile de succomber au [problème XY] (http://meta.stackoverflow.com/questions/66377/what-is-the-xy-problem). –

+0

@IngoKarkat J'ai mis à jour la question originale pour fournir mon but ultime. J'ai essentiellement un fichier de balises qui indexe ma base de code et je veux sélectivement vérifier les fichiers que je veux regarder sans vérifier la base de code entière. – supernun

Répondre

0

Non, vous ne pouvez observer l'effet (de saut vers un marqueur), ou abandonner la la sélection de l'utilisateur, capturer la sortie, et ré-implémenter l'écho et interroger vous-même, par exemple:

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>: ')