V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
leaveeel
V2EX  ›  问与答

vim 长文件内跳转后颜色/配置丢失

  •  
  •   leaveeel · 2020-08-18 17:22:59 +08:00 · 873 次点击
    这是一个创建于 1563 天前的主题,其中的信息可能已经有所发展或是发生改变。

    如图,如果行数较多,然后使用 G / ]] / n 等跳转命令会导致部分代码颜色丢失,往上翻会发现在某一行被截断,这时候进行 hjkl 移动会恢复向下一部分代码。然后继续找到下一个分隔行,直到最后
    vim

    在变成白色的代码内 emmet 插件的 css 补全失效,被解析成标签。
    vim

    js 代码应该是变成默认颜色了
    js

    这是应该显示的颜色
    js

    有没有人知道是什么原因,经常跳到文件尾碰到这个问题然后又从头一行一行移下来导致很烦燥

    _vimrc 配置文件

    filetype plugin indent on
    "关闭兼容
    set nocompatible
    filetype off
    "Windows 快捷键
    source $VIMRUNTIME/vimrc_example.vim
    "source $VIMRUNTIME/mswin.vim
    "behave mswin
    "字体设置
    set guifont=微软雅黑:h13:cGB2312
    "当前编辑的文件编码
    set fileencoding=utf-8
    "支持的编码
    set fileencodings=ucs-bom,utf-8,chinese,cp936
    set encoding=utf-8
    set termencoding=utf-8
    "解决菜单乱码
    source $VIMRUNTIME/delmenu.vim
    source $VIMRUNTIME/menu.vim
    "解决输出乱码
    language messages zh_CN.utf-8
    "防止特殊符号无法正常显示
    set ambiwidth=double
    "显示标尺
    set ruler
    "显示操作
    set showcmd
    "高亮
    syntax on
    set cursorline cursorcolumn
    "关闭工具栏 /滚动条
    set go=
    "显示最多行
    set dy=lastline
    "显示匹配括号
    "set showmatch
    "行号
    set number
    "制表符缩进 4 空格
    set shiftwidth=4
    "制表符宽 4 字符
    set tabstop=4
    "制表符替换为空格
    set expandtab
    "退格删除 4 个空格
    set softtabstop=4
    "自动缩进
    set autoindent
    "显示顶部 tab 标签
    set showtabline=2
    "禁用复制自动注释
    set paste
    "取消确认
    set shortmess=atI
    "自动保存
    set autowrite
    "历史记录
    set history=1000
    "禁用方向键
    noremap <up> <nop>
    noremap <down> <nop>
    noremap <left> <nop>
    noremap <right> <nop>
    "系统剪切板
    set clipboard+=unnamed
    "不生成备份文件
    set noundofile
    set nobackup
    "不生成意外退出备份文件
    "set noswapfile
    "禁用鼠标
    "set mouse-=a
    "最大化窗口
    if has('win32')
        au GUIEnter * simalt ~x
    else
        au GUIEnter * call MaximizeWindow()
    endif
    function! MaximizeWindow()
        silent !wmctrl -r :ACTIVE: -b add,maximized_vert,maximized_horz
    endfunction
    "初始化
    autocmd BufNewFile *.html exec ':call HTMLModel()'
    func HTMLModel()
        call setline(1,"<!DOCTYPE html>")
        call append(line("."),      "<html>")
        call append(line(".")+1,    "    <head>")
        call append(line(".")+2,    "        <meta charset='utf-8' />")
        call append(line(".")+3,    "        <meta name='viewport' content='width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no' />")
        call append(line(".")+4,    "        <meta http-equiv='X-UA-Compatible' content='IE=Edge,chrome=1' />")
        call append(line(".")+5,    "        <meta name='renderer' content='webkit' />")
        call append(line(".")+6,    "        <title></title>")
        call append(line(".")+7,    "    </head>")
        call append(line(".")+8,    "    <body>")
        call append(line(".")+9,    "        ")
        call append(line(".")+10,   "    </body>")
        call append(line(".")+11,   "</html>")
    endfunc
    autocmd BufNewFile *.html normal 11G$
    "Vundle 的路径
    set rtp+=$VIM/vimfiles/bundle/Vundle.vim
    "插件的安装路径
    call vundle#begin('$VIM/vimfiles/bundle/')
    Plugin 'VundleVim/Vundle.vim'
    Plugin 'tomasr/molokai'
    Plugin 'ctrlp.vim'
    Plugin 'scrooloose/nerdtree'
    Plugin 'mattn/emmet-vim'
    "Plugin 'othree/yajs.vim'
    Plugin 'mxw/vim-jsx'
    Plugin 'pangloss/vim-javascript'
    Plugin 'jiangmiao/auto-pairs'
    call vundle#end()
    
    "molokai
    syntax enable
    colorscheme molokai
    highlight NonText guibg=#060606
    highlight Folded  guibg=#0A0A0A guifg=#9090D0
    "树形表
    nmap <C-n> :NERDTreeToggle<CR>
    let NERDTreeShowLineNumbers=1
    let NERDTreeShowHidden=1
    "emmet 快捷键
    let g:user_emmet_expandabbr_key = '<S-Tab>'
    "ctrlP
    set wildignore+=*/tmp/*,*.so,*.swp,*.zip,*.png,*.jpg,*.jpeg,*.gif " MacOSX/Linux
    let g:ctrlp_custom_ignore = '\v[\/]\.(git|hg|svn)$'
    "javascript
    let g:javascript_plugin_jsdoc = 1
    let g:javascript_plugin_ngdoc = 1
    let g:javascript_plugin_flow = 1
    
    6 条回复    2020-08-18 18:32:51 +08:00
    tamlok
        1
    tamlok  
       2020-08-18 17:27:39 +08:00 via Android
    写 cpp 的时候,我也遇到过~~
    leaveeel
        2
    leaveeel  
    OP
       2020-08-18 17:53:29 +08:00
    @tamlok 你是怎么解决的,我之前把 vimrc 删了打开过代码,好像也还是有这个问题。是 gvim 本身的 feature 吗
    tamlok
        3
    tamlok  
       2020-08-18 17:58:21 +08:00 via Android
    @leaveeel 不会解决~~坐等高手
    thedrwu
        4
    thedrwu  
       2020-08-18 18:04:02 +08:00 via Android   ❤️ 1
    : syn sync fromstart

    缺点就是有点慢。需要的时候 on-demand,然后再调回来
    leaveeel
        5
    leaveeel  
    OP
       2020-08-18 18:30:46 +08:00
    @thedrwu 感谢,有效。查了下这个方法,相当于重新执行了一次高亮语法。慢倒是没觉得,可能文件暂时没有特别大吧,不过至少比从上个有效区 j 下来方便多了!
    leaveeel
        6
    leaveeel  
    OP
       2020-08-18 18:32:51 +08:00   ❤️ 1
    @tamlok
    4#给了解决办法,我在 vimrc 里给命令加了个快捷键,有需要你也可以配置一下。
    `noremap <Leader>r <Esc>:syntax sync fromstart<CR>`
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3153 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 14:23 · PVG 22:23 · LAX 06:23 · JFK 09:23
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.