问题 如何使用vi保存文件名中包含空格的文件?


我主要是从终端使用vim  命令。

我想创建并保存一个名为的文件 开始.txt (两个单词之间有空格)。我尝试了两种方法:

方法#1

:sav getting started.txt

但是我收到了一个错误: E172: Only one file name allowed 

方法#2

:sav "getting started.txt"

这次我得到了: E471: Argument required

我怎样才能实现我想要的目标?


5102
2018-06-15 20:50


起源

也许试试:sav“getting%20started.txt” - Azulflame
@azulflame不起作用,我想你最终可能得到一个名为的文件: getting20started.txt - pb2q


答案:


逃离空间角色:

:sav getting\ started.txt

12
2018-06-15 20:51



也可以看看 :help fnameescape。 - ib.
这个功能几乎没用。为什么我不能做一些简单的事情:sav“<c-r>%。new_extension”?这个单词中的每个编辑器/终端都可以通过双引号或单引号来逃避白色spasce。 - MaikoID


评论者@ib提及 fnameescape,这是你如何使用它:

  1. 输入 :save 和一个空间。
  2. 按Ctrl - [R 然后 = 进入表达模式。
  3. 输入 fnameescape("Your spacey, special character'y file name")标签 扩展工作,所以你可以做 fn标签e标签
  4. 输入 将转义的文件名插入命令行。

海报 iler.ml建议 一个容易做到这一点的功能(我稍微修改了他的代码)。把它放在你的 的.vimrc

" :W and :Save will escape a file name and write it
command! -bang -nargs=* W :call W(<q-bang>, <q-args>) 
command! -bang -nargs=* Save :call Save(<q-bang>, <q-args>) 

function! W(bang, filename) 
    :exe "w".a:bang." ". fnameescape(a:filename) 
endfu 

function! Save(bang, filename) 
    :exe "save".a:bang." ". fnameescape(a:filename) 
endfu 

4
2018-04-06 21:22