2016-02-09 56 views
8

假設我在我的主目錄中。我打開一個文件存在於一些深層次的嵌套目錄結構:現在VIM:如何從已打開文件的相同位置打開另一個文件

vim /some/really/long/path/file.txt 

,VIM內,我想先從這個漫長的位置另一個文件垂直分割(但我不想改變當前目錄到那個路徑,我仍然想要在主目錄中)。

外行(像我)會做這樣的事情:

:vsp /some/really/long/path/file2.txt 

但我想從你VIM天才在那裏找出來,有更簡單的方式來做到這一點?

在同一張筆記上,如果我有多個已經打開的文件駐留在不同的路徑中,VIM是否會自動爲所有位置分配某種內部變量?然後,當我想從其中一個位置啓動一個新的VSP或SP時,我只需使用這些內部變量?

+0

如果您希望從同一位置打開文件,您可以執行以下操作:cd/long/path/to/the/files/you/want然後轉到:e file1,:e file2等。 –

+0

Yes,I am意識到cd命令。我只是想知道VIM是否保留已打開文件的可訪問位置列表,我可以在不執行「cd」或每次輸入完整路徑的情況下循環瀏覽。 – shikhanshu

回答

12

試試這個:

:vs %:p:h/otherfile 

%:p:h給你當前文件的路徑。 有關更多信息,請參閱:help %:p

+0

標記此答案爲答案,因爲它解釋了具體情況如何:%:p:h thingy :) – shikhanshu

3

編輯在同一目錄下的另一個文件:

:vs %<Tab><C-w><C-w><C-w>file2<Tab> 

隨着映射:

nnoremap <key> :vs <C-R>=expand('%:p:h')<CR> 
+0

這是完美的。發佈我的問題後,我也在vim.wikia.com上找到了相同的答案。 http://vim.wikia.com/wiki/Easy_edit_of_files_in_the_same_directory – shikhanshu

0

如果你喜歡更多的導航而不是輸入命令,一個方便的選擇可能是使用嵌入式探索命令,該命令打開一個窗口,其中包含當前緩衝區中文件目錄中的列表文件。然後,您可以使用光標進行導航,並在想要在垂直分割中打開的文件上按v

的簡便方法是映射探索命令,如:

" open embedded file system navigator 
map <leader>\ :Explore<cr> 

<領導> \並導航到該文件,然後按v

用vim的一些版本中,瀏覽窗口保持打開狀態按下v之後 - 在這種情況下,如果你想避免額外的負擔,關閉探索窗口,你可以先做與豎直縫:vsp,調用:Expore並按輸入打開所需的文件。