Подтвердить что ты не робот

Vimscript: как получить текущий тип файла как переменную

Я хотел бы получить текущий тип файла как переменную в vimscript.

Я создаю функцию, которая захватывает текущий тип файла и редактирует другой файл соответствующего типа файла.

Например:

  • редактирование "foo/bar.txt", хотите открыть "tmp/other.txt"
  • редактирование "foo/bar.cpp", хотите открыть "tmp/other.cpp"

и т.д.. Я знаю, что :set ft? отображает файл в vim, но я не уверен, как его захватить, а затем открыть другой файл, используя его как часть новой файловой строки.

4b9b3361

Ответ 1

Вы можете получить доступ к значению параметра, предварительно указав его амперсандом. Чтобы присвоить переменную file переменной, следующие эквиваленты:

let my_filetype = &filetype
let my_filetype = &ft

Итак, для вашего примера, если задан тип файла текущего буфера, вы можете сделать что-то вроде

execute 'edit tmp/other.' . &filetype

Обратите внимание, что вам нужно execute выражение, чтобы переменная была расширена до того, как строки были объединены.

Ответ 2

Тип файла и суффикс файла не обязательно одно и то же. Например, если вы редактируете файл .txt, пусть zft = & ft устанавливает zft в "текст". пусть zfs = fnamemodify (bufname ( "%" ), ": e" ) устанавливает zfs в "txt".