Это - nullable DateTime. ?
после того, как тип примитива / структура указывает, что это - nullable версия.
DateTime является структурой, которая никогда не может быть пустой. От MSDN:
тип значения DateTime представляет даты и время со значениями в пределах от 12:00:00 полуночи, 1 января, 0001 нашей эры, или нашей эры (также известный как Наша эра или C.E.) в течение 23:59:59, 31 декабря, 9999 нашей эры (C.E).
DateTime?
может быть пустым как бы то ни было.
Есть несколько способов сделать это, большинство из которых было предложено, но я подумал, что резюмирую их двумя дополнительными:
~ / project1
и у вас есть ~ / project1 / .vim.custom
и выполните cd ~; vim project1 / file.c
, пользовательские настройки не будут найдены. Во многих организациях есть стандартный заголовок (с уведомлением об авторских правах, названием проекта и т. Д.) В вверху каждого исходного файла. В этом случае вы можете заставить 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
Если ваши коллеги-разработчики не будут жаловаться на это, вы всегда можете добавить настройки vim к каждому файлу в комментариях.
/*
* vim:ts=4:sw=4:expandtab:...
*/
int main(int argc, char **argv)
{
...
Вы также можете поместить автокоманды в свой .vimrc
, которые устанавливают определенные параметры для каждого пути.
au BufRead,BufNewFile /path/to/project1/* setl sw=4 et
au BufRead,BufNewFile /path/to/project2/* setl sw=3 noet
У меня есть это в $ 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