2015-02-23 146 views
0

几天前我从intelliJ切换到VIM,并且我的语法突出显示出现了一些问题。我主要使用php和html,并且在某些文件中,某些;标有红色背景(也许意思是说我的语法有错误?)。这很可能发生在;后面跟着评论//。我敢肯定,没有错误...VIM语法突出显示“越野车”?

也有几个文件不提供php语法高亮显示在块注释/**/之后,直到php标记?>被关闭。

任何想法什么我想念?另外,我会很欣赏关于语法高亮选项的建议。很难找到有用的webdev的东西,因为VIM在那个领域并不那么受欢迎。

这里我当前的vim设置: https://github.com/raQai/.vim

我会感激你的帮助

编辑:

这里是代码多数民众赞成造成问题:

<?php namespace KF\LINKS; 

defined ('ABSPATH') or die ('nope!'); 

/** 
* Plugin Name: KF Attachment Links 
* Description: Adding attatchemts to post, pages and teams (Kong Foos Team Manager) 
* Version: 1.0.0 
* Author: Patrick Bogdan 
* Text Domain: kfl 
* License: GPL2 
* 
* Copyright 2015 Patrick Bogdan 
* TODO: Settings for post_types with checkboxes 
*/ 

new KFLinksMetaBox(); 

class KFLinksMetaBox { 
    const kfl_key = 'kf-links-information'; 

    function __construct() { 
     if (is_admin()) { 
      add_action ('admin_enqueue_scripts', wp_enqueue_style ('kfl-admin-style', plugins_url('includes/css/admin-styles.css', plugin_basename(__FILE__)))); 
      add_action ('admin_enqueue_scripts', wp_enqueue_script ('kfl-admin-js', plugins_url('includes/js/kfl-admin-scripts.js', plugin_basename(__FILE__)))); 

      add_action ('add_meta_boxes', array(&$this, 'kf_links_meta_box_add')); 
      add_action ('save_post', array(&$this, 'kf_links_meta_box_save')); 
     } 

     register_deactivation_hook(__FILE__, array(&$this, 'kf_links_uninstall')); 

     add_filter('the_content', array($this, 'kf_links_add_to_posts')); 
    } 

    function kf_links_uninstall() { 
     delete_post_meta_by_key(self::kfl_key); 
    } 

    function kf_links_add_to_posts($content) { 
     $links = $this->kf_links_explode(get_post_meta(get_the_ID(), self::kfl_key, true)); 
     if ($links['is_active'] == '1' && count($links['items']) > 0) { 
      $links_html = ''; 
      if (!empty($links['title'])) { 
       $links_html .= '<strong>' . $links['title'] . '</strong>'; 
      } 
      foreach ($links['items'] as $link) { 
       if (!empty($link['name']) && !empty($link['url'])) { 
        $links_html .= '<br /><a href="' . $link['url'] . '">&raquo; ' . $link['name'] . '</a>'; 
       } 
      } 
      if (!empty($links_html)) { 
       $content .= '<p class="attachment-links">' . $links_html . '</p>'; 
      } 
     } 
     return $content; 
    } 

    function kf_links_meta_box_add() { 
     $screens = array('post', 'page', 'teams'); 

     foreach($screens as $screen) 
     { 
      add_meta_box (
       'kf_links_meta_box', // id 
       'Linksammlung', // title 
       array(&$this, 'kf_links_meta_box_display'), // callback 
       $screen, // post_type 
       'normal', // context 
       'high' // priority 
      ); 
     } 
    } 

    function kf_links_meta_box_display($post) { 
     wp_nonce_field('kf_links_meta_box', 'kf_links_meta_box_nonce'); 
     $this->kf_links_meta_box_display_html($post); 
    } 

    function kf_links_meta_box_display_html($post) 
    { 
     $post_string = get_post_meta($post->ID, self::kfl_key, true); 
     $links = $this->kf_links_explode($post_string); 

     ?> 
     <div class="kf-meta-box-checkbox"> 
      <input onClick="kfl_checkboxDivDisplay(this.id, 'kf-links'); kfl_creaetLinksString();" <?php if ($links['is_active']) echo 'checked '; ?>type="checkbox" id="kf-links-checkbox" value="1" /> 
      <label id="kf-links-checkbox-label" for="kf-links-checkbox">Linksammlung aktivieren</label> 
     </div> 
     <div id="kf-links" <?php if (!$links['is_active']) echo 'style="display:none" '; ?>> 
      <div class="kf-meta-box-full"> 
       <label for="kf-links-title">Titel der Linksammlung</label> 
       <input onChange="kfl_creaetLinksString()" id="kf-links-title" value="<?php echo $links['title']; ?>" placeholder="Titel der Linksammlung" /> 
      </div> 
      <div class="kf-links-header"> 
       <label>Name</label> 
       <label>URL</label> 
      </div> 
      <div id="kf-links-items"> 
       <?php 
       foreach ($links['items'] as $ID => $arr) { 
        $this->kf_links_item_display_html($ID, $arr, $links['is_active']); 
       } 
       if (count($links['items']) < 1) { 
        $this->kf_links_item_display_html(0, array('name' => '', 'url' => ''), false); 
       } 
       ?> 
      </div> 
      <h4><a href="#kf-link-add" onClick="kfl_createLinkItem()">+ Weiteren Link hinzufügen</a></h4> 
      <input type="hidden" id="kf-links-counter" value="<?php echo ((count($links['items']) < 1) ? 1 : count($links['items'])); ?>" /> 
      <input type="hidden" name="<?php echo self::kfl_key; ?>" id="<?php echo self::kfl_key; ?>" value="<?php echo $post_string; ?>" /> 
     </div> 
     <?php 
    } 

    function kf_links_item_display_html($ID, $arr, $is_active) 
    { 
     ?> 
     <div id="kf-links-item[<?php echo $ID; ?>]" class="kf-links-item"> 
      <input onChange="kfl_creaetLinksString();" value="<?php echo $arr['name']; ?>" <?php if ($is_active) echo 'required '; ?>placeholder="Name" /> 
      <input onChange="kfl_creaetLinksString();" value="<?php echo $arr['url']; ?>" <?php if ($is_active) echo 'required '; ?>placeholder="http://..." /> 
      <input onClick="kfl_deleteLink('kf-links-item[<?php echo $ID; ?>]'); kfl_creaetLinksString();" value="&cross;" type="button" class="button button-small button-primary" /> 
     </div> 
     <?php 
    } 

    function kf_links_meta_box_save($post_id) 
    { 
     if (!isset($_POST['kf_links_meta_box_nonce']) || ! wp_verify_nonce($_POST['kf_links_meta_box_nonce'], 'kf_links_meta_box')) { 
      return $post_id; 
     } 

     $post_type = get_post_type_object($_POST['post_type']); 

     if (!current_user_can($post_type->cap->edit_post, $post_id)) { 
      return; 
     } 

     $new_meta_value = (isset($_POST[self::kfl_key]) ? $_POST[self::kfl_key] : ''); 
     update_post_meta($post_id, self::kfl_key, $new_meta_value); 
    } 

    function kf_links_explode($string) 
    { 
     if (empty($string) || !is_string($string)) { 
      $links['is_active'] = 0; 
      return $links; 
     } 

     $explode = explode(';$;', $string); 

     $links['is_active'] = (isset($explode[0]) ? $explode[0] : 0); 
     $links['title'] = (isset($explode[1]) ? $explode[1] : ''); 

     $links['items'] = array(); 
     for ($i = 2; $i < count($explode); $i++) { 
      $explode2 = explode(';?;', $explode[$i]); 
      $link = array(
        'name' => $explode2[0], 
        'url' => $explode2[1] 
      ); 
      $links['items'][] = $link; 
     } 
     return $links; 
    } 
} 

这里有一些截图: https://www.dropbox.com/sh/jj3gluc7ok001hu/AABq_hRiKcbbDo1E0rKpP2Jxa?dl=0

+0

此行无用'set runtimepath^=〜/ .vim/bundle/ctrlp.vim'。你可以删除它,因为病原体已经这样做了。至于语法,你能提供导致错误的例子吗? – FDinoff 2015-02-23 15:43:53

+0

您使用哪个Vim版本,并请提供可重现的示例代码片断(理想情况下由屏幕截图支持),以显示问题。 – 2015-02-23 15:44:28

+0

'php -l file.php'会说什么? – hek2mgl 2015-02-23 16:13:27

回答

0

尝试:syntax sync fromstart

如果这样的作品,添加autocmd BufEnter * :syntax sync fromstart.vimrc

说明:如果语法高亮不会处理从一开始的每行代码,它可能无法收到信息的关键部分,以了解它是什么类型的代码处理。例如,如果您使用的是HTML文件并且深藏在脚本标记中,则语法高亮显示可能无法回溯到足以查看脚本标记并因此将您的JS代码处理为HTML。