2015-05-22 11 views
5

Wiem, jak używać CtrlP. Wpisuję ctrl + p, zaczynam pisać nazwę pliku, ... i tak dalej. Ale ... Jestem bardzo leniwym programistą. Chcę bezpośrednio wysłać do bieżącego słowa CtrlP. Wiem jak zdobyć bieżące słowo:Vim language: wyślij bieżące słowo do CtrlP

let l:currentWord = expand('<cword>') 

w vim Języka ... I Jak mogę wysłać L: currentWord do CtrlP?

map <F6> :call ComposerKnowWhereCurrentFileIs()<CR> 
function! ComposerKnowWhereCurrentFileIs() 
    let l:currentWord = expand('<cword>') 
    let l:command = "grep " . l:currentWord . " ../path/to/composer -R | awk '{print $6}' | awk -F\\' '{print $2}'" 
    let l:commandFileFound = l:command . ' | wc -l' 
    let l:numberOfResults = system(l:commandFileFound) 
    if l:numberOfResults == 1 
     let l:fileName = system(l:command) 
     let l:openFileCommand = 'tabe /path/to/project' . l:fileName 
     exec l:openFileCommand 
    else 
     echo "Too many files :-(- use CtrlP ;-) " 
    endif 
endfunction 
+0

mapa w – lollo

+0

Mogę map wewnątrz funkcji? – sensorario

+0

Dlaczego chcesz to zrobić w funkcji? – lollo

Odpowiedz

10
<C-P><C-\>w 

Zobacz :h ctrlp-mappings. może odwzorować tę kombinację:

map <F6> <C-P><C-\>w 

W zależności:

exe "normal \<C-P>" . expand('<cword>') 
+0

Nie potrzebuję ponownego mapowania. – sensorario

1

Za to, że nie użyłby mapowanie <C-P>, ale komenda :CtrlP, jako że weźmie parametry.

Aby zbudować mapowanie, które przekazuje bieżące słowo do polecenia, istnieją dwa podejścia. Bezpośrednio wstawić bieżącą słowo w wierszu poleceń (poprzez :help c_CTRL-R_CTRL-W):

:nnoremap <Leader>p :CtrlP <C-r><C-p><CR> 

Lub, w celu wykorzystania expand(), zbudować polecenia Ex poprzez :execute:

:nnoremap <Leader>p :execute 'CtrlP' expand('<cword>')<CR> 
2
function! LazyP() 
    let g:ctrlp_default_input = expand('<cword>') 
    CtrlP 
    let g:ctrlp_default_input = '' 
endfunction 
command! LazyP call LazyP() 
nnoremap <C-P> :LazyP<CR> 

(ta mógłby prawdopodobnie zostać uproszczony, ale mam do czynienia ze składnią vim)

+0

CtrlP nie jest poleceniem edytora ... – sensorario

+0

Tutaj - https://github.com/kien/ctrlp.vim - jest napisane, że tak. – Dummy00001

+0

Próbowałem tego fragmentu w moim .vimrc przed umieszczeniem go tutaj, i to działa. –

3

Cały punkt CtrlP i podobnych wtyczek jest zapewnienie alternatywnej linii poleceń, gdzie yo Możesz zawęzić wyszukiwanie podczas pisania.

Jeśli nie potrzebujesz szukania rozmytego i masz już nazwę pliku pod kursorem ... dlaczego nie po prostu użyć wbudowanego gf?

- edycja -

W poniższym gif:

  • skoczę do /path/not/knowable/BlaBlaClassName.php z gf,
  • I wrócić do poprzedniego bufora z <C-^> (niezwiązane z pytaniem)
  • Przeskoczę do deklaracji BlaBlaClassName w /path/not/knowable/BlaBlaClassName.php ponownie z <C-]> dzięki plikowi tags wygenerowanemu przez ctags.

gf

+0

Ponieważ gf nie działa. Pracuję z PHP. – sensorario

+0

Dlaczego 'gf' nie działa z PHP? – romainl

+0

Cóż, ... jeśli jestem na BlaBlaClassName, jak mogę otworzyć plik umieszczony w /path/not/knowable/SomeFileName.php? – sensorario