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

San*_*mar 11 vim

我主要通过vi命令从终端使用vim .

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

方法#1

:sav getting started.txt
Run Code Online (Sandbox Code Playgroud)

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

方法#2

:sav "getting started.txt"
Run Code Online (Sandbox Code Playgroud)

这次我得到了: E471: Argument required

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

pb2*_*b2q 12

逃离空间角色:

:sav getting\ started.txt
Run Code Online (Sandbox Code Playgroud)

  • 另见`:help fnameescape`. (4认同)
  • 功能几乎没用。为什么我不能做一些简单的事情 :sav "<cr>%.new_extension" ?这个词中的每个编辑器/终端都可以用双引号或单引号转义空格。 (2认同)

Lei*_*set 5

评论者@ib 提到fnameescape,这是您可以使用它的方法:

  1. 输入:save一个空格。
  2. 按Ctrl-R然后=进入表情模式。
  3. 输入fnameescape("Your spacey, special character'y file name")。Tab扩展工作,所以你可能可以做fnTabeTab。
  4. 按Enter将转义的文件名插入到命令行中。

海报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 
Run Code Online (Sandbox Code Playgroud)