2016-03-21 11 views
1

Ich versuche, ein Wort unter einem externen Befehl zu senden. Ich habe etwas gegraben, kann aber keine funktionierende Lösung haben. Ich habe über die Verwendung von <cword> gelernt, aber ich kann nicht scheinen, das aktuelle Wort an den externen Befehl zu übergeben.Vim Senden Sie ein Wort unter Cursor an externen Befehl

Hier ist mein Befehl:

nmap <silent> <F8> :!start test.exe s/\(<c-r>=expand("<cword>")<cr>\)/ 

Alles, was es tut, ist bekommt das aktuelle Wort unter dem Cursor und übergibt es an TEST.EXE. Kann jemand bitte helfen.

aktualisiert

Hier ist, was ich zu erreichen versuchen. Ich habe Funktionsname im Code.

a = 0 
b = 1 
c = add_function(a,b) 

Ich möchte Wort unter dem Cursor verwenden add_function auf die benutzerdefinierte ausführbare Datei zu übergeben ich habe. So dass es test.exe starten wird, und übergeben Sie die folgenden Schritte aus:

open, 'add_function' 

enter image description here

ich den oben vim Befehl versucht, aber es funktioniert.

Antwort

4

Ich bin nicht sicher, was das Problem mit Ihrem Mapping als solche ist, wenn ich die <silent> ich in meinem cmdline bekommen entfernen:

:!start test.exe s/\(WORD\)/ 

Welche, was Sie wollen können? Es sendet nicht, weil Sie keine <Cr> bis zum Ende hinzugefügt haben (und zeigen nicht in der Kommandozeile wegen der <silent>) ...

nnoremap <silent> <F8> :!start test.exe s/\(<c-r>=expand("<cword>")<cr>\)/<CR> 

Wenn dies nicht das, was Sie möchten, und s/\(..\)/ wenn das Hinzufügen nicht beabsichtigt ist, können dann, indem Sie versuchen, die einfachste Arbeits Mapping von nur gerade Echo-ing das aktuelle Wort in Vim anfangen zu bekommen:

nnoremap <F8> :echo shellescape(expand('<cword>'))<Cr> 

dann, dass die externe echo laufen erweitern Befehl:

nnoremap <F8> :execute ':!echo ' . shellescape(expand('<cword>'))<Cr> 

erweitern Dann, dass Ihr start text.exe auszuführen:

nnoremap <F8> :execute ':!start test.exe' . shellescape(expand('<cword>'))<Cr> 

Und schließlich fügen Sie die <silent>:

nnoremap <silent> <F8> :execute ':!start test.exe' . shellescape(expand('<cword>'))<Cr> 
0

ein hinzufügen mehr "cr" externes Programm

nmap <silent><F8> :!start test.exe s/\(<c-r>=expand("<cword>")<cr><cr>\)/ 
laufen

Ende i Es wäre besser, es in

nnoremap <silent><F8> :!start test.exe %s/\(<c-r>=expand("<cword>")<cr><cr>\)/ 
+0

umzuschreiben. Während dieser Code die Frage beantworten kann, bietet zusätzliche Kontext in Bezug auf _why_ es besser seinen langfristigen Wert verbessert. –

Verwandte Themen