如果我的緩衝區列表如下:簡單的方法來改變緩衝區的父目錄?
:ls 1 %a "Application/PowerModeServer/test/testTimer.cpp" line 1 2 "Application/PowerModeServer/test/fakeClient.cpp" line 0 3 "Application/PowerModeServer/test/fakeVp.cpp" line 0 7 "Application/PowerModeServer/private/IMsgSender.h" line 0 9 "Application/PowerModeServer/private/UdpSocket.h" line 0 17 "Application/PowerModeServer/src/PowerFsm.cpp" line 0 18 "Application/PowerModeServer/src/lua/src/lfunc.h" line 0 19 "Application/PowerModeServer/src/lua/src/lmem.h" line 0 20 "Application/PowerModeServer/src/lua/src/ltable.h" line 0 41 "Application/PowerModeServer/src/PowerModeServer.cpp" line 0 42 "Application/PowerModeServer/src/UdpSocket.cpp" line 0 43 "Application/PowerModeServer/src/Timer.cpp" line 0
什麼改變Vim的當前工作目錄的,比如父目錄,緩衝器19中的最簡單的方法?我習慣用手指咕嚕咕嚕地使用:
:cd A<TAB>P<TAB>s<TAB>l<TAB>s<TAB>,但這需要相當多的擊鍵 - 特別是如果完成不明確。我想要更簡潔的內容,例如:
:cd ~19任何建議?
編輯:添加MODS由ZYX建議在這裏,因爲我沒有足夠的積分可以直接編輯截拳道的回答是:
function! CdBufWorkingDir(target)
if empty(a:target)
let targetdir = expand("%:p:h")
else
if a:target =~# '^\~\d'
let targetdir = fnamemodify(bufname(str2nr(a:target[1:])), ":p:h")
else
let targetdir = a:target
endif
endif
execute "cd ".fnameescape(targetdir)
echo targetdir
endfunction
command! -nargs=? Cdbuf :call CdBufWorkingDir(<q-args>)
我想你誤解了我的意圖(?)我不想切換緩衝區,我只是想改變vim的當前工作目錄。我想我也不介意改變當前的緩衝區,如果它實現了這個目標。是否有一些設置導致cwd跟蹤當前緩衝區? – evadeflow 2010-12-02 00:27:53
+1使我能夠在文檔中找到'autochdir'選項。顯然,如果啓用它,可能會導致一些插件中斷,但在像您這樣的映射中臨時啓用/禁用插件可能會很有用。 – evadeflow 2010-12-02 02:29:09