vim能不能实现保存时默认文件名为当前文件的第一行?

Vim、Emacs配置和使用
回复
头像
xxxcjr
帖子: 102
注册时间: 2007-01-01 9:03

vim能不能实现保存时默认文件名为当前文件的第一行?

#1

帖子 xxxcjr » 2011-01-02 12:21

像EmEditor、word都有这种功能

能不能为vim写个函数,结合:bro sav命令实现这种功能?
头像
lainme
论坛版主
帖子: 7805
注册时间: 2008-09-13 19:17
系统: Arch Linux (x86_64)
联系:

Re: vim能不能实现保存时默认文件名为当前文件的第一行?

#2

帖子 lainme » 2011-01-02 15:54

getline可以获取某一行的内容,再用saveas就可以了

:help getline()
:help :saveas

代码: 全选

command SAVE let curline=getline(1) | exec "saveas ".curline
头像
lilydjwg
论坛版主
帖子: 4249
注册时间: 2009-04-11 23:46
系统: Arch Linux
联系:

Re: vim能不能实现保存时默认文件名为当前文件的第一行?

#3

帖子 lilydjwg » 2011-01-02 17:53

如果第一行为空就看第二行,规避了一些会导致问题的特殊字符。
[vim]
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()
[/vim]
要 :bro 的话自己加上。

PS: 又是我的 vimrc 里有的。。。。
头像
lainme
论坛版主
帖子: 7805
注册时间: 2008-09-13 19:17
系统: Arch Linux (x86_64)
联系:

Re: vim能不能实现保存时默认文件名为当前文件的第一行?

#4

帖子 lainme » 2011-01-02 18:09

lilydjwg 写了:如果第一行为空就看第二行,规避了一些会导致问题的特殊字符。
[vim]
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()
[/vim]
要 :bro 的话自己加上。

PS: 又是我的 vimrc 里有的。。。。
总要自己先想想么,重新造轮子有利于学习。。。
头像
lilydjwg
论坛版主
帖子: 4249
注册时间: 2009-04-11 23:46
系统: Arch Linux
联系:

Re: vim能不能实现保存时默认文件名为当前文件的第一行?

#5

帖子 lilydjwg » 2011-01-02 18:58

lainme 写了: 总要自己先想想么,重新造轮子有利于学习。。。
那你什么时候重写个 Vim?

PS: 才发现你的 DokuBlog 我昨天刚去过 :-)
回复