分页: 1 / 1

怎样将编辑区的第一行文本作为文件名保存?

发表于 : 2010-06-23 18:46
leechau
例如文档1的内容是:
this is doc A
the following is contents
...
要保存为“this is doc A.txt”,文档2的内容是:
that is B
some words more
...
要保存为“that is B.txt”。文档的数量很多,无法对每一文档手工保存,怎样用宏实现?
自己尝试了一下:
:let name = getline(1)
:w name
但保存的文件名是name,而不是name变量的值,改成:w &name也不行,请高手指教!

Re: 怎样将编辑区的第一行文本作为文件名保存?

发表于 : 2010-06-23 20:04
ubuntu10.04lts
我的怎么不能安装vim

Re: 怎样将编辑区的第一行文本作为文件名保存?

发表于 : 2010-06-25 11:50
lilydjwg

代码: 全选

:h :exe
这是我自己写的,用文章首行或第二行作为文件名。

代码: 全选

function Lilydjwg_TSave()
  let line = getline(1)
  if line =~ '^\s*$'
    let line = getline(2)
  endif
  let line = substitute(line, '[:/\\]', '-', 'g')
  let line = substitute(line, '^\s\+', '', 'g')
  let line = substitute(line, '\s\+$', '', 'g')
  let line = substitute(line, ' ', '\\ ', 'g')
  let line = substitute(line, '\r', '', 'g')
  exe 'sav ' . line . '.txt'
endfunction

command TSave call Lilydjwg_TSave()
用宏的话,

代码: 全选

:h c_ctrl-r

Re: 怎样将编辑区的第一行文本作为文件名保存?

发表于 : 2010-06-25 18:18
leechau
感谢lilydjwg的指点,有两个地方不太明白:
首先
function ...
...
endfunction
command ...
这一段代码是否需要保存成一个文件?路径和文件名如何确定?怎么运行?
另外exe一行代码中点号的作用是字符串的连接符吗?
非常感谢!

Re: 怎样将编辑区的第一行文本作为文件名保存?

发表于 : 2010-06-25 21:32
lilydjwg
leechau 写了:感谢lilydjwg的指点,有两个地方不太明白:
首先
function ...
...
endfunction
command ...
这一段代码是否需要保存成一个文件?路径和文件名如何确定?怎么运行?
放到你的 .vimrc 里就可以了。如果只是临时用的话,也可以直接敲进命令行,或者存到文件后:source之。
leechau 写了: 另外exe一行代码中点号的作用是字符串的连接符吗?
非常感谢!
是的!这点和PHP是一样的。

Re: 怎样将编辑区的第一行文本作为文件名保存?

发表于 : 2010-06-27 10:31
leechau
lilydjwg 写了:
leechau 写了:感谢lilydjwg的指点,有两个地方不太明白:
首先
function ...
...
endfunction
command ...
这一段代码是否需要保存成一个文件?路径和文件名如何确定?怎么运行?
放到你的 .vimrc 里就可以了。如果只是临时用的话,也可以直接敲进命令行,或者存到文件后:source之。
leechau 写了: 另外exe一行代码中点号的作用是字符串的连接符吗?
非常感谢!
是的!这点和PHP是一样的。
受教! :em42

Re: 怎样将编辑区的第一行文本作为文件名保存?

发表于 : 2010-06-27 15:25
eexpress
这估计有现成的插件。
简单的事情

Re: 怎样将编辑区的第一行文本作为文件名保存?

发表于 : 2010-06-27 15:44
lilydjwg
eexpress 写了:这估计有现成的插件。
简单的事情
太简单了,所以写了代码也没做成插件啊。另外,这个用shell做起来也很容易的呵。