当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 6 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : vi如何以当前文件作为工作目录
帖子发表于 : 2009-08-31 18:05 

注册: 2009-07-15 13:03
帖子: 30
送出感谢: 0 次
接收感谢: 0 次
如当前文件为 /home/miao/Desktop/foo.txt
工作目录pwd为 /home/miao
如何设定命令运行 cd /home/miao/Desktop更改工作目录?

谢谢


_________________
Ubuntu 9.04 中, 我的BLOG


页首
 用户资料  
 
2 楼 
 文章标题 : Re: vi如何以当前文件作为工作目录
帖子发表于 : 2009-08-31 21:37 

注册: 2009-07-15 13:03
帖子: 30
送出感谢: 0 次
接收感谢: 0 次
set autochdir 就可自动把当前文件作为工作路径
单条命令则为 :cd %:p:h


_________________
Ubuntu 9.04 中, 我的BLOG


页首
 用户资料  
 
3 楼 
 文章标题 : Re: vi如何以当前文件作为工作目录
帖子发表于 : 2009-08-31 21:40 

注册: 2009-07-15 13:03
帖子: 30
送出感谢: 0 次
接收感谢: 0 次
延伸问题: 在进了Buf后,如果有NERDTree则NERDTree的位置自动定为该文件,又该如何设置 :em23


_________________
Ubuntu 9.04 中, 我的BLOG


页首
 用户资料  
 
4 楼 
 文章标题 : Re: vi如何以当前文件作为工作目录
帖子发表于 : 2009-08-31 22:10 

注册: 2007-10-27 1:04
帖子: 403
送出感谢: 0 次
接收感谢: 1
引用:
延伸问题: 在进了Buf后,如果有NERDTree则NERDTree的位置自动定为该文件,又该如何设置



最简单的办法:查找名字为NERDTree的窗口,如果不存在,则什么也不做;

否则,进入该窗口,然后
:normal q
:NERDTree %:p:h
:call search(expand("%:t"))


页首
 用户资料  
 
5 楼 
 文章标题 : Re: vi如何以当前文件作为工作目录
帖子发表于 : 2009-08-31 23:34 

注册: 2009-07-15 13:03
帖子: 30
送出感谢: 0 次
接收感谢: 0 次
NERDTree不太好搞,而且发现每调用一次NERDTree,NERDTree的缓冲计数加1,
用回了Netrw,照sarrow的提示,写了如下代码,按F3自动跳到该文件所在目录并指向该文件,按2<C-o>返回 :em11
代码:
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


页首
 用户资料  
 
6 楼 
 文章标题 : Re: vi如何以当前文件作为工作目录
帖子发表于 : 2009-09-01 18:28 

注册: 2009-07-15 13:03
帖子: 30
送出感谢: 0 次
接收感谢: 0 次
重写了下代码,
调用命令时
1、如果缓冲区已编辑且仅有一个缓冲区,水平分割一个窗口打开文件浏览器
2、如果该缓冲区是由该脚本打开的,那它怎么来就怎么回去-关闭或返回。

哪里可以改进或者缩写的还请多多指教。 :em03

代码:
"由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


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 6 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 1 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译