каков синтаксис для указания VI читать / писать исходный файл с программными вкладками и указанным отступом? - PullRequest
4 голосов
/ 02 ноября 2009

Где-то я увидел фрагмент кода, который сказал vi использовать мягкие вкладки и установить размер вкладки. Если вы поместите этот фрагмент внизу исходного файла, то vi волшебным образом использует эти настройки для этого файла.

Каков синтаксис и правила для включения этого фрагмента в исходный файл? Можно ли заставить emacs использовать эти настройки?

Ответы [ 5 ]

3 голосов
/ 02 ноября 2009

Вы можете поместить это в комментарии в вашем исходном файле:

ex: set softtabstop=4 shiftwidth=4 tabstop=4 expandtab: 

Синтаксис комментария зависит от типа исходного файла.

Для C / C ++ / Java это будет:

// ex: set softtabstop=4 shiftwidth=4 tabstop=4 expandtab: 

Для JSP это будет:

<%-- ex: set softtabstop=4 shiftwidth=4 tabstop=4 expandtab: --%>

Это работает, если он помещен в начало исходного файла, но я не уверен, что это будет работать, если поместить его также в конец.

Это не будет работать для emacs. Для emacs может быть другой способ достижения того же самого.

3 голосов
/ 02 ноября 2009

Выезд :h modeline.

Пример:

/* vim: ai set sw=4 ts=4 */

См. :h modelines, сколько строк в файле Vim проверит на информацию моделин. По умолчанию проверяются первые 5 строк.

1 голос
/ 02 ноября 2009

Поместите это в исходный файл C ++:

// vim: set ft=cpp

Функция modeline ищет строку "vim:" и затем выполняет следующее. Примечание: это может открыть потенциальные эксплойты, если вы не доверяете открываемым файлам, поэтому подумайте дважды, прежде чем включать эту функцию.

1 голос
/ 02 ноября 2009

Насколько я знаю, у vi такой возможности не было. Скорее всего, вы думаете о модельной функции Vim. Аналогичная функциональность есть в emacs, где вы можете поместить в файл локальные переменные .

Обратите внимание, что, по крайней мере, в Vim, моделины имели историю уязвимостей. Это в первую очередь связано с тем, что проблемные параметры специально заносятся в черный список, а не позволяют задавать только определенное подмножество переменных в моделях. Я бы предложил использовать такой плагин, как securemodelines .

0 голосов
/ 02 ноября 2009

Хорошо, во-первых, в real vi вы делаете это в файле .exrc.

Во-вторых, используйте

set autoindent tabstop=8 shiftwidth=4

потому что в противном случае vi будет вставлять вкладки шириной всего 4 символа. Полученный текстовый файл не будет иметь смысла в любом другом редакторе.

...