RFC для HTTP (как указано выше) диктует, что заголовки не чувствительны к регистру, однако вы обнаружите, что с определенными браузерами (я смотрю на вас, IE), что капитализация каждого из слов имеет тенденцию быть лучшим:
Location: http://stackoverflow.com
Content-Type: text/plain
vs
location: http://stackoverflow.com
content-type: text/plain
Это не стандарт «HTTP», а только один из особенностей браузера, о которых мы как разработчики должны думать.
Быстрое решение, которое я бы использовал в этом случае, это вставить несколько нажатий клавиш в аббревиатуру:
iabbrev <? <?=?><Left><Left>
Поместите курсор на два места влево, после =
.
Таким образом, вы можете использовать различные клавиши перемещения, такие как
,
, или даже вернуться в обычный режим с помощью
и командовать обычными командами обычного режима. Тогда пример будет
iabbrev <? <?=?><Esc>hha
и он делает то же самое, что и первый пример. Если вы расширите аббревиатуру пробелом, она будет иметь один дополнительный пробел. от которого можно избавиться, используя Или расширить с помощью
(backspace) в аббревиатуре.
, что не оставит пробела.
Поправка: поскольку аббревиатура сначала расширяется, а затем вставляется пробел, вам нужна небольшая функция, найденная в справке (map.txt):
func Eatchar(pat)
let c = nr2char(getchar(0))
return (c =~ a:pat) ? '' : c
endfunc
Это лучше всего поместить в .vimrc
. Теперь следующая аббревиатура будет работать полностью так, как задумано:
:iabbrev <silent> <? <?=?><Left><Left><C-R>=Eatchar('\s')<CR>
Оно немного грязное, но имеет вызов внешней функции, которая удаляет пробелы, и должно работать хорошо.
Что вам нужно, так это фрагменты. Я использую для этого snipmate.
Это можно сделать с помощью lh-map-tools :
"
" in {rtp}/ftpluvin/vim/vim_snippets.vim
inoreab <buffer> <silent> if
\ <C-R>=InsertSeq('if', 'if!cursorhere!\nendif!mark!')<CR>
Другие плагины предлагают аналогичную функцию.