4

Указать, что я хочу сделать, это:

  • если я создам xxx.php , #!/usr/bin/env php будет первой строкой файла
  • если я создам xxx.py , #!/usr/bin/env python будет добавлен первым.

Как я могу подойти к этому?Спасибо!

4 ответа4

9

После некоторой поисковой работы я нахожу сообщение в SO, которое может решить мою проблему с помощью шаблонов.Надеюсь, это полезно для вас, ребята.

Создавайте шаблоны pythontmp.txt и phptmp.txt в несколько директорий (пример:~/.vim/templates/), как показано ниже

#!/usr/bin/env python(php)

Добавьте следующие настройки в .vimrc

autocmd bufnewfile *.py :0r ~/.vim/templates/pythontmp.txt
autocmd bufnewfile *.php :0r ~/.vim/templates/phptmp.txt
1

Мне действительно нравится подход определения функции vim для выполнения работы, таким образом, становится намного проще делать более сложные вещи. Например, если вставленный текст зависит от имени файла, как это обычно делается в C/C++. Мой C/C++ выглядит так:

autocmd BufNewFile *.{h,hpp} call <SID>insert_c_gates() 

...

function! s:insert_c_gates()
   let gatename = <SID>get_gate_name()
   execute "normal i#ifndef " . gatename
   execute "normal o#define " . gatename
   execute "normal Go#endif /* " . gatename . " */"
   normal kk
endfunction

Функция get_get_name() формирует имя шлюза из имени редактируемого файла и на самом деле зависит от проекта, над которым я работаю, потому что некоторые проекты хотят, чтобы оно было отформатировано определенным образом.

1

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

Предполагая, что среда Linux ... Этот скрипт проверит расширение файла и при необходимости создаст файл с заголовком перед вызовом vim.

#/bin/bash

type=`expr "\$1" : ".*\.\(.*\)"`   # Check the file extension

case "$type" in
    py) 
    interpreter=python;
    ;;
    php)
    interpreter=php;
    ;;
esac

if test ${interpreter+defined}; then echo "#!/usr/bin/env $interpreter" > $1 && /usr/bin/vim $1;
else /usr/bin/vim $1;
fi

Затем вы можете использовать псевдоним этого сценария для запуска вместо vim.

alias vim='/path/to/script.sh'
1

Существует множество плагинов, которые предлагают эту функцию. Некоторые даже позволяют автоматически выводить различные вещи или даже параметризировать заголовок в зависимости от папки, в которой вы создаете новый файл (mu-template).

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .