2012-08-17 71 views
0

這是對this question的後續(但是是一個明確的問題),我將在此重申此處的完成。Vim:Vimscript調用netrw命令

我有一個Vim映射從當前目錄的目錄(所以結果在:pwd之後)開始搜索(ack-grep with ack.vim插件)模式。這個映射在我查看緩衝區時起作用。

我想在netrw中使用相同的映射。但是,我想將當前目錄(:pwd)更改爲netrw向我展示的目錄,因此搜索將從我正在查看的目錄開始。我知道我可以用netrw c命令來做到這一點。我如何從一個函數中給出c命令?

我已經試過:

function! StartAckSearch() 
    " If we're in netrw change the current directory to the directory we're 
    " viewing 
    if &ft ==# 'netrw' 
     echo 'in netrw' 
     c                                                   
    endif 
endfunction 
nnoremap <Leader>a :call StartAckSearch()<CR> 

和:

我已經試過:

function! StartAckSearch() 
    " If we're in netrw change the current directory to the directory we're 
    " viewing 
    if &ft ==# 'netrw' 
     echo 'in netrw' 
     execute 'c'                                                   
    endif 
endfunction 
nnoremap <Leader>a :call StartAckSearch()<CR> 

但他們都沒有工作。

問題 如何使用Vimscript調用netrw命令? (如果我的問題可以修改得更清楚,請繼續)

回答

2

我認爲您可以使用norm c來調用它。

另一種方式是exe 'norm c'

+0

我試過'規範C',它的工作。你能否提供更多關於爲什麼/如何運作的信息? 'normal foo'說'執行正常命令'foo'? – 2012-08-17 09:57:37

+0

':normal gg'與在** NORMAL **模式下輸入'gg'相同 – kev 2012-08-17 09:59:25

+0

我知道這是你查看文件的情況。但是爲什麼當我在使用Vimscript和netrw時必須明確地說'norm c'?如果我只是'c',那麼這個錯誤會讓我認爲它想要c(hange)的東西。 – 2012-08-17 10:05:37