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

Vim、Emacs配置和使用
回复
leechau
帖子: 4
注册时间: 2008-09-05 15:21
送出感谢: 0
接收感谢: 0

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

#1

帖子 leechau » 2010-06-23 18:46

例如文档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也不行,请高手指教!
上次由 leechau 在 2010-06-24 12:28,总共编辑 1 次。
头像
ubuntu10.04lts
帖子: 144
注册时间: 2010-06-16 21:37
送出感谢: 0
接收感谢: 0

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

#2

帖子 ubuntu10.04lts » 2010-06-23 20:04

我的怎么不能安装vim
生活就像强奸

如果不能改变,那就学会去享受


your left brain is nothing right,your right brain is nothing left

对搜狗有希望的一起加油


行行好,注册个115网盘吧
头像
lilydjwg
论坛版主
帖子: 4165
注册时间: 2009-04-11 23:46
系统: Arch Linux
送出感谢: 11 次
接收感谢: 127 次
联系:

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

#3

帖子 lilydjwg » 2010-06-25 11:50

代码: 全选

: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
leechau
帖子: 4
注册时间: 2008-09-05 15:21
送出感谢: 0
接收感谢: 0

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

#4

帖子 leechau » 2010-06-25 18:18

感谢lilydjwg的指点,有两个地方不太明白:
首先
function ...
...
endfunction
command ...
这一段代码是否需要保存成一个文件?路径和文件名如何确定?怎么运行?
另外exe一行代码中点号的作用是字符串的连接符吗?
非常感谢!
头像
lilydjwg
论坛版主
帖子: 4165
注册时间: 2009-04-11 23:46
系统: Arch Linux
送出感谢: 11 次
接收感谢: 127 次
联系:

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

#5

帖子 lilydjwg » 2010-06-25 21:32

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

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

#6

帖子 leechau » 2010-06-27 10:31

lilydjwg 写了:
leechau 写了:感谢lilydjwg的指点,有两个地方不太明白:
首先
function ...
...
endfunction
command ...
这一段代码是否需要保存成一个文件?路径和文件名如何确定?怎么运行?
放到你的 .vimrc 里就可以了。如果只是临时用的话,也可以直接敲进命令行,或者存到文件后:source之。
leechau 写了: 另外exe一行代码中点号的作用是字符串的连接符吗?
非常感谢!
是的!这点和PHP是一样的。
受教! :em42
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙
送出感谢: 4 次
接收感谢: 256 次

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

#7

帖子 eexpress » 2010-06-27 15:25

这估计有现成的插件。
简单的事情
● 鸣学
头像
lilydjwg
论坛版主
帖子: 4165
注册时间: 2009-04-11 23:46
系统: Arch Linux
送出感谢: 11 次
接收感谢: 127 次
联系:

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

#8

帖子 lilydjwg » 2010-06-27 15:44

eexpress 写了:这估计有现成的插件。
简单的事情
太简单了,所以写了代码也没做成插件啊。另外,这个用shell做起来也很容易的呵。
回复

回到 “Vim和Emacs”