Как сохранить файл с пробелом в имени файла с помощью vi?

В основном я использую vim из терминала командой vi.

Я хочу создать и сохранить файл с именем get started.txt (есть пробел между двумя словами). Я пробовал два метода:

Метод # 1

:sav getting started.txt

но я получил ошибку: E172: Only one file name allowed

Метод # 2

:sav "getting started.txt"

На этот раз я получил: E471: Argument required

Как я могу достичь того, что хочу?

Ответ 1

Сбросить символ пробела:

:sav getting\ started.txt

Ответ 2

Комментарий @ib упоминает fnameescape, вот как вы можете его использовать:

  • Введите :save и пробел.
  • Нажмите Ctrl - R, затем =, чтобы войти в режим выражения.
  • Введите fnameescape("Your spacey, special character'y file name"). Tab работает, поэтому вы можете сделать fn Tab e Tab.
  • Нажмите 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