Vimscript: как получить текущий тип файла как переменную
Я хотел бы получить текущий тип файла как переменную в vimscript.
Я создаю функцию, которая захватывает текущий тип файла и редактирует другой файл соответствующего типа файла.
Например:
- редактирование "foo/bar.txt", хотите открыть "tmp/other.txt"
- редактирование "foo/bar.cpp", хотите открыть "tmp/other.cpp"
и т.д.. Я знаю, что :set ft?
отображает файл в vim, но я не уверен, как его захватить, а затем открыть другой файл, используя его как часть новой файловой строки.
Ответы
Ответ 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".