Как переключиться между несколькими конфигурациями энергии с командой или локальными vimrc файлами?

Это - nullable DateTime. ? после того, как тип примитива / структура указывает, что это - nullable версия.

DateTime является структурой, которая никогда не может быть пустой. От MSDN:

тип значения DateTime представляет даты и время со значениями в пределах от 12:00:00 полуночи, 1 января, 0001 нашей эры, или нашей эры (также известный как Наша эра или C.E.) в течение 23:59:59, 31 декабря, 9999 нашей эры (C.E).

DateTime? может быть пустым как бы то ни было.

82
задан Ciro Santilli 新疆改造中心法轮功六四事件 19 July 2015 в 11:53
поделиться

4 ответа

В Резюме

Есть несколько способов сделать это, большинство из которых было предложено, но я подумал, что резюмирую их двумя дополнительными:

  • Per-directory vimrc - имеет тот недостаток, что Vim должен запускаться в правильный каталог: если ваш проект находится в ~ / project1 и у вас есть ~ / project1 / .vim.custom и выполните cd ~; vim project1 / file.c , пользовательские настройки не будут найдены.
  • Модели - очень эффективны, но имеет недостаток, заключающийся в необходимости добавлять их ко всем файлам (и не забывать добавлять их в новые файлы).
  • Автокоманды, специфичные для каталога - это очень эффективно
  • Поиск в файле определенного заголовка (см. ниже) - это это тот, который я использовал чаще всего в прошлом, когда работал с разными компаниями или над четко названными проектами
  • . vimrc для каждого каталога, который проверяется при открытии файла (см. ниже). Еще один, довольно простой в реализации, особенно если код вашего проекта находится в одном месте.

Поиск заголовка

Во многих организациях есть стандартный заголовок (с уведомлением об авторских правах, названием проекта и т. Д.) В вверху каждого исходного файла. В этом случае вы можете заставить Vim автоматически сканировать первые (например) 10 строк файла в поисках ключевого слова. Если он его найдет, он может изменить ваши настройки. Я' мы изменили его, чтобы сделать его проще, чем форма, которую я использую (которая выполняет множество других функций), но создаем ~ / .vim / after / filetype.vim (если у вас его еще нет) и добавьте что-нибудь вроде этого:

au FileType * call <SID>ConfigureFiletypes(expand("<amatch>"))

" List of file types to customise
let s:GROUPNAMETypes = ['c', 'cpp', 'vhdl', 'c.doxygen']

func! <SID>CheckForGROUPNAMECode()
    " Check if any of the first ten lines contain "GROUPNAME".

    " Read the first ten lines into a variable
    let header = getline(1)
    for i in range(2, 10)
        let header = header . getline(i)
    endfor

    if header =~ '\<GROUPNAME\>'
        " Change the status line to make it clear which
        " group we're using
        setlocal statusline=%<%f\ (GROUPNAME)\ %h%m%r%=%-14.(%l,%c%V%)\ %P
        " Do other customisation here
        setlocal et
        " etc
    endif
endfunc

func! <SID>ConfigureFiletypes(filetype)
    if index(s:GROUPNAMETypes, a:filetype) != -1
        call <SID>CheckForGROUPNAMECode()
    endif
endfunc

Каждый раз, когда открывается файл любого типа и задан тип файла (строка au FileType * ), вызывается функция ConfigureFiletypes . Это проверяет, находится ли тип файла в списке типов файлов, связанных с текущей группой (GROUPNAME), в данном случае 'c', 'cpp', 'vhdl' или 'c.doxygen'. Если это так, он вызывает CheckForGROUPNAMECode (), который читает первые 10 строк файла и, если они содержат GROUPNAME, выполняет некоторые настройки. Помимо установки расширенных вкладок или чего-то еще, это также изменяет строку состояния, чтобы четко отображать имя группы, чтобы вы его знали ' s работает с первого взгляда.

Проверка конфигурации при открытии

Как и в случае с предложением JS Bangs, наличие собственного файла конфигурации может быть полезным. Однако вместо загрузки его в vimrc рассмотрите что-то вроде этого, которое будет проверять, когда файл .c открывается для .vim.custom в том же каталоге, что и файл .c.

au BufNewFile,BufRead *.c call CheckForCustomConfiguration()

function! CheckForCustomConfiguration()
    " Check for .vim.custom in the directory containing the newly opened file
    let custom_config_file = expand('%:p:h') . '/.vim.custom'
    if filereadable(custom_config_file)
        exe 'source' custom_config_file
    endif
endfunction
40
ответ дан 24 November 2019 в 09:11
поделиться

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

/*
 * vim:ts=4:sw=4:expandtab:...
 */

int main(int argc, char **argv)
{
    ...
12
ответ дан 24 November 2019 в 09:11
поделиться

Вы также можете поместить автокоманды в свой .vimrc , которые устанавливают определенные параметры для каждого пути.

au BufRead,BufNewFile /path/to/project1/* setl sw=4 et
au BufRead,BufNewFile /path/to/project2/* setl sw=3 noet
33
ответ дан 24 November 2019 в 09:11
поделиться

У меня есть это в $ HOME / .vimrc :

if filereadable(".vim.custom")
    so .vim.custom
endif

Это позволяет мне поместить файл .vim.custom в каждый каталог, чтобы загрузить команды и параметры, относящиеся к этому каталогу. Если вы работаете над несколькими проектами с глубокой структурой каталогов, вам может понадобиться что-то более сложное (например, пройтись по дереву каталогов до тех пор, пока не будет найден .vim.custom ), но та же основная идея будет работать.

ОБНОВЛЕНИЕ:

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

let b:thisdir=expand("%:p:h")
let b:vim=b:thisdir."/.vim"
if (filereadable(b:vim))
    execute "source ".b:vim
endif
63
ответ дан 24 November 2019 в 09:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: