Vim - отступ вроде Emacs - PullRequest
6 голосов
/ 03 ноября 2010

Я использую vim (основной, чтобы я мог работать на обычном ssh-терминале - все еще неудобно с версией Emacs не-gui), но большинство моих коллег в организации используют emacs.Поэтому, используя CVS, мы сталкиваемся с проблемами несоответствия отступов (табуляции становятся пробелами, количеством табуляции / пробелами, разметкой кода и т. Д.).

Есть ли способ, которым я могу сделать VIM-отступ ТОЧНО, как EMACS.(аналогично профилю emacs по умолчанию, который используют мои коллеги).

(Самое главное, я хочу, чтобы схемы vim для C ++ и TCL соответствовали схеме отступов в emacs).

regards,

JP

Ответы [ 3 ]

6 голосов
/ 03 ноября 2010

Я не знаю, есть ли способ напрямую импортировать настройки отступов Emacs в vim, но вы, вероятно, можете настроить такое же поведение в самом vim:

set expandtab преобразует табуляцию в пробелы
set autoindent сохранит уровень отступа от предыдущей строки
set shiftwidth=4 повлияет на отступ блока с помощью >> и << <br> set softtabstop=4 устанавливает длину мягкой табуляции в пробелах
set tabstop=8 устанавливает ширину символа табуляции

Это правильно объяснено в vim wiki .

Когда вам требуется отступ для конкретного типа файла, у вас есть два варианта:

  1. Установить autocmd для изменения отступа при чтении и создании файла:
    au BufRead,BufNewFile *.py,*pyw,*.html,*.js set shiftwidth=4 установит ширину смещения для * .py файлов.
  2. Настройте плагин filetype, создайте сценарии name.vim внутри папки .vim/ftplugin для файлов определенного типа и установите там описанные переменные. Это также подробно описано в vim wiki .
1 голос
/ 03 ноября 2010

Относительно специализированного отступа для c ++ и TCL, есть некоторые специальные вещи, которые применяются в aditon ко всей другой информации о настройках, которая была предложена. Vim имеет специальные правила отступа, определенные в коде для разных языков. Часть этого находится в каталоге / indent установки vim, где есть отдельный файл для каждого типа файла. Для получения дополнительной информации о том, как это работает, прочитайте справку по «indentexpr».

Отступ c - и, я думаю, также отступ для c ++ - в основном определен в исходном коде Vim и имеет множество опций, которые вы можете установить, плюс он специально настраивается в c.vim или c ++. файл. Прочитайте справку по «cindent» и «c-indenting» для получения дополнительной помощи по этому вопросу.

Короче говоря, файл tcl.vim управляет специальным отступом для файлов tcl. Если вы хотите пересмотреть работу отступа с tcl, вам нужно изменить основную функцию в этом файле. Отступы c / c ++ в основном контролируются внутренними компонентами Vim, но с множеством различных флагов опций. Вы можете управлять отступами в c / c ++, конфигурируя параметры так, как вы хотите, и / или написав функцию для файла indent в каталоге / indent. (Я считаю, что в каталоге / indent нет файла c ++, не уверен, является ли файл c.vim для редактирования там, или вам нужно создать новый файл c ++. Vim. Я думаю, что будет использоваться файл c.vim. в основном это пустая оболочка в стандартной установке Vim, но вы можете прочитать другие файлы отступа * .vim, чтобы понять, как они работают.

0 голосов
/ 03 ноября 2010

Ниже приведен фрагмент некоторых параметров, касающихся отступов .vimrc:

set expandtab
set tabstop=2
set shiftwidth=2
set autoindent
set smartindent

Все параметры хорошо описаны в справке vim:

:help smartindent
:help autoindent

UPD: также для C-подобных языков вы можете рассмотреть :help C-indenting

...