Vim: map shift-K, um die Hilfe zum aktuellen Wort in einem neuen Tab zu öffnen

2689
sundar

In Verbindung mit https://stackoverflow.com/questions/3131393/remapping-help-in-vim-to-open-in-a-new-tab möchte ich auch die Shift-K-Verknüpfung erstellen, die die Hilfe öffnet in einem neuen Tab.

Ich habe es zuerst versucht nmap <S-K> :tab help expand("<cword>")<CR>, aber es funktioniert nicht wirklich - das expandwird anscheinend wörtlich als Hilfetagtext genommen und nicht ausgeführt.

Wie kann ich also neu zuordnen <S-K>, um Hilfe zu dem aktuellen Wort in einem neuen Tab in Vim zu erhalten?

1
Ich würde empfehlen, bei [Vi and Vim.SE] (http://vi.stackexchange.com) nachzufragen, aber gibt es einen Grund, warum Sie stattdessen hier gefragt haben? bertieb vor 8 Jahren 0
@bertieb Kein spezieller Grund außer der Annahme, dass bei einer größeren Userbasis die Wahrscheinlichkeit größer ist, hier eine Antwort zu erhalten. Es hat sich herausgestellt, dass meine Frage zwei Teile enthielt. Ich werde jetzt den unbeantworteten Teil zu [vi.se] bringen und dort versuchen. sundar vor 8 Jahren 0
Ich habe gesehen, dass du von ihnen wusstest, also dachte ich, es würde etwas in dieser Richtung sein, Prost :) bertieb vor 8 Jahren 1

2 Antworten auf die Frage

6
madmax1

Ich bin nicht sicher, was Sie zu tun versuchen. <s-k>, auch bekannt als K, öffnet die Manpage für das Schlüsselwort unter dem Cursor. Ich gehe davon aus, dass Sie ein Mapping erstellen möchten, um die vim-Hilfeseite für das Schlüsselwort unter dem Cursor zu öffnen. Dies kann durch Folgendes geschehen (ich werde es verwenden, <c-k>um es nicht zu überschreiben K):

noremap <c-k> :execute "tab h " . expand("<cword>")<cr> 
", auch bekannt als K, öffnet die Manpage "<- Das ist eigentlich falsch: Es öffnet sich, was auch immer das aktuelle` keywordprg`-Programm ist, je nach Dateityp; sein Standardwert ist "man", aber `` keywordprg` ändert sich automatisch in ` : help` in einer vimscript-Datei und kann beispielsweise auf perldoc -f für den Dateityp perl gesetzt werden, um automatisch Perldoc-Hilfe in Perl-Dateien zu erhalten, wenn die Taste K gedrückt wird. sundar vor 8 Jahren 1
Was ich wollte, war eine Möglichkeit, das Ganze zu übernehmen und einfach die Funktion hinzuzufügen, die Ausgabe in einem neuen Tab zu öffnen. Ihre "Execute" - Idee hat mir geholfen, diese Arbeit zumindest für vim - Schlüsselwörter zu schaffen. Daher akzeptiere ich Ihre Antwort und teile die Frage, ob Sie dieses für jeden Wert von "keywordprg" als separate Frage portabel machen können (da dies als eine kompliziertere Anforderung). sundar vor 8 Jahren 0
Ich sehe, was Sie zu tun versuchen. Sie können dies mit diesem Mapping erreichen (ich werde es verwenden wieder): `nnoremap : Ausführen 'tabnew lesen !' . & Keywordprg. ''. erweitern("")` madmax1 vor 8 Jahren 1
0
sundar

Um später darüber zu stolpern: Ich habe die beiden in @ madmax1s Antwort und Kommentar genannten Methoden kombiniert, damit Vim die geeignete Hilfemethode automatisch je nach Dateityp wählt.

function! GetHelpOnCwordInTab() if &filetype == "vim" execute 'tab help ' . expand("<cword>") else execute 'tabnew <bar> read ! ' . &keywordprg . expand("<cword>") endif  endfunction autocmd FileType * nnoremap <C-K> :call GetHelpOnCwordInTab()<CR> 

(Ich musste den Vorschlag von @ madmax1 auch für das Keymapping ( C-Kanstelle von S-K) verwenden, da Scriptease eine Autocmd hat, die das S-KMapping überschreibt, und ich bin nicht sicher, wie ich das in .vimrc überschreiben kann.)