如当前文件为 /home/miao/Desktop/foo.txt
工作目录pwd为 /home/miao
如何设定命令运行 cd /home/miao/Desktop更改工作目录?
谢谢
vi如何以当前文件作为工作目录
-
- 帖子: 30
- 注册时间: 2009-07-15 13:03
vi如何以当前文件作为工作目录
Ubuntu 9.04 中, 我的BLOG
-
- 帖子: 30
- 注册时间: 2009-07-15 13:03
-
- 帖子: 30
- 注册时间: 2009-07-15 13:03
-
- 帖子: 403
- 注册时间: 2007-10-27 1:04
Re: vi如何以当前文件作为工作目录
延伸问题: 在进了Buf后,如果有NERDTree则NERDTree的位置自动定为该文件,又该如何设置
最简单的办法:查找名字为NERDTree的窗口,如果不存在,则什么也不做;
否则,进入该窗口,然后
:normal q
:NERDTree %:p:h
:call search(expand("%:t"))
-
- 帖子: 30
- 注册时间: 2009-07-15 13:03
Re: vi如何以当前文件作为工作目录
NERDTree不太好搞,而且发现每调用一次NERDTree,NERDTree的缓冲计数加1,
用回了Netrw,照sarrow的提示,写了如下代码,按F3自动跳到该文件所在目录并指向该文件,按2<C-o>返回
用回了Netrw,照sarrow的提示,写了如下代码,按F3自动跳到该文件所在目录并指向该文件,按2<C-o>返回

代码: 全选
function Jump_to_current_file()
let filename=expand('%:t')
exec 'e %:p:h'
call cursor(8,1)
call search(filename)
endfunction
nmap <F3> :call Jump_to_current_file()<cr>
Ubuntu 9.04 中, 我的BLOG
-
- 帖子: 30
- 注册时间: 2009-07-15 13:03
Re: vi如何以当前文件作为工作目录
重写了下代码,
调用命令时
1、如果缓冲区已编辑且仅有一个缓冲区,水平分割一个窗口打开文件浏览器
2、如果该缓冲区是由该脚本打开的,那它怎么来就怎么回去-关闭或返回。
哪里可以改进或者缩写的还请多多指教。
调用命令时
1、如果缓冲区已编辑且仅有一个缓冲区,水平分割一个窗口打开文件浏览器
2、如果该缓冲区是由该脚本打开的,那它怎么来就怎么回去-关闭或返回。
哪里可以改进或者缩写的还请多多指教。

代码: 全选
"由buffer expr得到window数
function GetWindowCount(expr)
let cur_buf_id=bufnr(a:expr)
let cur_buf_cnt=0
let i=1
while 1
let buf_id=winbufnr(i)
if buf_id==cur_buf_id
let cur_buf_cnt=cur_buf_cnt+1
endif
if buf_id==-1
break
end
let i=i+1
endwhile
return cur_buf_cnt
endfunction
"跳转或关闭窗口
function JumpToCurrentFile()
"跳回或关闭
if exists('b:jm_is_jumped')
if exists('b:jm_is_splitted')
exec 'close'
else
exec 'buffer #'
endif
return
endif
"跳转
let filename=expand('%:t')
if &modified && GetWindowCount('%')<2
exec 'split'
let l:jm_is_splitted=1
end
exec 'e %:p:h'
let b:jm_is_jumped=1
if exists('l:jm_is_splitted')
let b:jm_is_splitted=1
endif
call cursor(8,1)
call search(filename)
endfunction
nmap <F3> :call JumpToCurrentFile()<cr>
Ubuntu 9.04 中, 我的BLOG