DarkMatter in Cyberspace
  • Home
  • Categories
  • Tags
  • Archives

第一行为文件名保存的文件的实现方法(VIM版)


问题描述 例如文档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”。 文档的数量很多,无法对每一文档手工保存,希望有一款文本编辑器能用脚本(或者宏之类的)实现该功能。 解决方案 在_vimrc文件中加上如下内容: function Blog_Save() " 删除空行,包括全是空格的行 g/^\s*\(/d " 将文件第一行内容保存在变量line中 let line = getline(1) " 去掉其中的非法字符,如\等 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') " 执行保存文件命令,其中点号是连接符,类似于PHP中的用法 exe 'sav '.line.'.txt' endfunction " 定义一个【用户自定义命令】 command BlogSav call Blog_Save() " 键映射 :map :BlogSav 这段代码整体分为3部分:第一部分定义了一个函数,第二部分为这个函数定义了一个【用户自定义命令】,以便于在VIM的普通模式下用:+command的方法使用,第3部分是一个键映射,将按、输入:BlogSav、按回车键这一系列动作映射到F5键上,这样只要按一下F5键,就实现了【问题描述】一节中设想的功能。



Published

Jun 27, 2010

Last Updated

Jun 27, 2010

Category

Tech

Tags

  • 脚本 5
  • Vim 92

Contact

  • Powered by Pelican. Theme: Elegant by Talha Mansoor