Как обновить Vim, чтобы нанести цветную маркировку на новые элементы HTML

Это самый продвинутый метод, который я нашел, уже пробовал некоторые другие в прошлом. Действителен, чтобы получить IP-адрес посетителя (но учтите, что любой хакер может легко фальсифицировать ip-адрес).

function get_ip_address() {
    // check for shared internet/ISP IP
    if (!empty($_SERVER['HTTP_CLIENT_IP']) && validate_ip($_SERVER['HTTP_CLIENT_IP'])) {
        return $_SERVER['HTTP_CLIENT_IP'];
    }

    // check for IPs passing through proxies
    if (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
        // check if multiple ips exist in var
        if (strpos($_SERVER['HTTP_X_FORWARDED_FOR'], ',') !== false) {
            $iplist = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']);
            foreach ($iplist as $ip) {
                if (validate_ip($ip))
                    return $ip;
            }
        } else {
            if (validate_ip($_SERVER['HTTP_X_FORWARDED_FOR']))
                return $_SERVER['HTTP_X_FORWARDED_FOR'];
        }
    }
    if (!empty($_SERVER['HTTP_X_FORWARDED']) && validate_ip($_SERVER['HTTP_X_FORWARDED']))
        return $_SERVER['HTTP_X_FORWARDED'];
    if (!empty($_SERVER['HTTP_X_CLUSTER_CLIENT_IP']) && validate_ip($_SERVER['HTTP_X_CLUSTER_CLIENT_IP']))
        return $_SERVER['HTTP_X_CLUSTER_CLIENT_IP'];
    if (!empty($_SERVER['HTTP_FORWARDED_FOR']) && validate_ip($_SERVER['HTTP_FORWARDED_FOR']))
        return $_SERVER['HTTP_FORWARDED_FOR'];
    if (!empty($_SERVER['HTTP_FORWARDED']) && validate_ip($_SERVER['HTTP_FORWARDED']))
        return $_SERVER['HTTP_FORWARDED'];

    // return unreliable ip since all else failed
    return $_SERVER['REMOTE_ADDR'];
}

/**
 * Ensures an ip address is both a valid IP and does not fall within
 * a private network range.
 */
function validate_ip($ip) {
    if (strtolower($ip) === 'unknown')
        return false;

    // generate ipv4 network address
    $ip = ip2long($ip);

    // if the ip is set and not equivalent to 255.255.255.255
    if ($ip !== false && $ip !== -1) {
        // make sure to get unsigned long representation of ip
        // due to discrepancies between 32 and 64 bit OSes and
        // signed numbers (ints default to signed in PHP)
        $ip = sprintf('%u', $ip);
        // do private network range checking
        if ($ip >= 0 && $ip <= 50331647) return false;
        if ($ip >= 167772160 && $ip <= 184549375) return false;
        if ($ip >= 2130706432 && $ip <= 2147483647) return false;
        if ($ip >= 2851995648 && $ip <= 2852061183) return false;
        if ($ip >= 2886729728 && $ip <= 2887778303) return false;
        if ($ip >= 3221225984 && $ip <= 3221226239) return false;
        if ($ip >= 3232235520 && $ip <= 3232301055) return false;
        if ($ip >= 4294967040) return false;
    }
    return true;
}

source: http://blackbe.lt/advanced-method -в-получить-на-клиент-ф-в-PHP /

24
задан unmounted 12 July 2010 в 21:44
поделиться

4 ответа

html.vim - это синтаксический файл, к которому обращается Vim, чтобы определить, какие теги будут окрашены. Расположение этого файла зависит от вашей установки Vim. В этом синтаксическом файле вы увидите множество строк, которые выглядят следующим образом:

" new html 4.0 tags
syn keyword htmlTagName contained abbr acronym bdo button col label
syn keyword htmlTagName contained colgroup del fieldset iframe ins legend
syn keyword htmlTagName contained object optgroup q s tbody tfoot thead

Эти строки определяют ключевые слова синтаксиса. В данном случае они определяют имена тегов HTML. Первая строка указывает Vim раскрасить теги abbr, acronym, bdo, button, col и label. Вы можете указать Vim для раскрашивания дополнительных тегов, используя следующий синтаксис:

" new html 5 tags
syn keyword htmlTagName contained video canvas

Теперь Vim будет раскрашивать теги video и canvas и любые дополнительные ключевые слова, которые вы добавите.

Однако если вы обновите встроенный html.vim, он будет перезаписан при следующем обновлении Vim, поэтому лучше всего добавлять свои правила к встроенным. Для этого создайте папку after/syntax в папке .vim и поместите в нее html.vim.

В этом gist есть большое количество элементов и аргументов HTML 5, упомянутых @user240515 ниже. Вставьте его содержимое в созданный вами html.vim.

Обратитесь к :help html.vim за дополнительной информацией.

29
ответ дан 28 November 2019 в 22:23
поделиться

Спасибо за этот вопрос и спасибо за принятый ответ! Вот полный список новых тегов, которые нужно добавить для HTML 5, так как они определены на момент написания:

" new html 5 tags
syn keyword htmlTagName contained article aside audio canvas command datalist
syn keyword htmlTagName contained details embed figcaption figure footer header
syn keyword htmlTagName contained hgroup keygen mark meter nav output progress
syn keyword htmlTagName contained rp rt ruby section source summary time video
22
ответ дан Johan 28 November 2019 в 22:23
поделиться

Я добавил файл отступа html5 в ответвление othree / html5.vim, основываясь на приведенных выше предложениях.

См. http://github.com/briangershon/html5.vim

.
4
ответ дан Brian Gershon 28 November 2019 в 22:23
поделиться

Просто поместите следующий файл в ~ / .vim / syntax:

http://gist.github.com/390929

7
ответ дан 28 November 2019 в 22:23
поделиться