文本编辑软件—VIM

  刚开始使用 VIM 的时候的确感觉到有些别扭,中间也有将 VIM 放在一边不去用的经历。到现在不再感觉 VIM 有什么神秘,但却对之更加热爱。因为确实感觉到了 VIM 使用起来真的特别地好用。所以第一篇软件介绍就先介绍这个文本工具 VIM。
  网上对 VIM 的介绍已经很多了,但真的是鱼龙混杂让人难分真伪。亦或者说的晦涩难懂,可能英文资料内容会好一点。但对读者的阅读要求门槛又有点太高了,甚至很多英文资料都找不到。所以这里对 VIM 的介绍会简单的开始,如何获得 VIM 以及如何安装。

  这里简单解释一下GVIM(Graphical User Interface visual IMproved),翻译为中文就是“带图形界面的增强版可视化编辑器”。回到正题,软件下载地址(以windows系统为例):https://www.vim.org/download.php 获得 Vim 安装包。可以选择安装程序,或者便携版本。这里特别提醒将软件安装/解压至*英文*目录下,如果解压在一个中文目录下可能会出现一些兼容问题。安装后GVIM文件夹里有入门教程 vimtutor.bat 自行学习。
  vim 的帮助文档默认为英文。中文帮助文档:https://vimcdoc.sourceforge.net/ 将下载的解压至 ~\vim\vim92\pack\dist\start\ 目录下即可使用中文帮助文档。

  1. Vimwiki 插件
    1. Vimwiki 是一个基于 Vim 编辑器的个人 Wiki 系统插件,允许用户以纯文的格式创建、编辑和管理 Viki 界面。
      插件下载地址:https://github.com/vimwiki/vimwiki/
      附:vimwiki 中文帮助
    2. Calendar.vim 日历插件,可以可以和 Vimwiki 插件配合使用亦可单独使用。
      插件下载地址: https://www.vim.org/scripts/script.php?script_id=52
      附:calendar 中文帮助
  2. 插件安装简述
    VIM 插件的安装在插件的说明文档一般都会有说明,请仔细阅读插件说明文档。这里提供一种方法是将每个插件解压到一个单独的文件夹里,这样管理插件会变得轻松。比如将插件解压后放到文件夹 ~\vim\vim92\pack\dist\start\ 里,每一个插件单独放到一个子文件夹下。若无法查看插件的帮助文档执行命令 :helptags . 命令后即可在帮助文档里查看插件的帮助文档。
  3. 其他使用技巧
  4. 配置文件vimrc
      1 set nocompatible    " 禁用旧版本 vi 的一些特性
      2 filetype plugin on    " 打开文件类型检查
      3 syntax on        " 打开语法高亮
      4 set wildoptions=pum     " 弹出菜单
      5 set path+=**            " 递归查找子文件
      6 set fileencodings=ucs-bom,utf-8,gb18030,big5,euc-jp,euc-kr,latin1
      7 au BufEnter * cd %:p:h  " 将工作目录修改为文件所在目录
      8 " 自定义函数
      9 function! Remove()    " 不改变文件顺序删除重复靠后的行
     10   let i=1|g/^/s//\=i.'|'/|let i+=1
     11   sort! /^\d\{-}|/            " 将行号后面的内容进行倒序排列
     12   g/^\d\{-}|\(.*\)$\n\d\{-}|\1$/d    " 删除与下一行内容相同的行
     13   sort n
     14   %s/\d\{-}|//
     15 endfunction
     16 nnoremap <F7> :silent execute Remove()<CR>
     17 function! RemoveBySecond()    " 以第二列为重复依据,删除靠后的行
     18   let i=1|g/^/s//\=i.'|'/|let i+=1
     19   sort! /^\d\{-}|\S*\s/        " 将行号后面的内容进行倒序排列
     20   g/^\d\{-}|\S*\s\(.*\)$\n\d\{-}|\S*\s\1$/d
     21   sort n
     22   %s/\d\{-}|//
     23 endfunction
     24 " 插件配置
     25 " ================================
     26 "  << calendar-vim >>
     27 " ================================
     28 let g:calendar_monday = 1    " 以星期一为开始
     29 let g:calendar_mark = 'right'    " 当前日期标志在日期右边
     30 let g:calendar_mruler = '一月,二月,三月,四月,五月,六月,七月,
     31             \八月,九月,十月,冬月,腊月'
     32 let g:calendar_wruler = '日 一 二 三 四 五 六'
     33 let g:calendar_navi_label = '上月,本月,下月'
     34 let g:calendar_weeknm = 5
     35 " ================================
     36 " 使用 vimwiki
     37 " 提示:重映射了 <C-Space> 解决与系统输入法热键的冲突
     38 " ================================
     39 nmap <C-S-Space> <Plug>VimwikiToggleListItem
     40 let g:vimwiki_menu='个人维基'
     41 let g:vimwiki_toc_header = '目录'
     42 let g:vimwiki_links_header = '超链接目录'
     43 let g:vimwiki_tags_header = '标签目录'
     44 let g:vimwiki_CJK_length = 1
     45 let g:vimwiki_hl_cb_checked = 2
     46 let g:vimwiki_hl_headers = 1
     47 let g:vimwiki_text_ignore_newline = 0
     48 let g:vimwiki_list_ignore_newline = 0
     49 let g:vimwiki_diary_months = {
     50       \ 1: '一月', 2: '二月', 3: '三月',
     51       \ 4: '四月', 5: '五月', 6: '六月',
     52       \ 7: '七月', 8: '八月', 9: '九月',
     53       \ 10: '十月', 11: '冬月', 12: '腊月'
     54       \ }
     55 let wiki_1 = {}
     56 let wiki_1.ext = '.txt'
     57 let wiki_1.name = '互联记事本'
     58 let wiki_1.auto_tags = 1
     59 let wiki_1.diary_header = '日记目录'
     60 let wiki_1.auto_diary_index = 1
     61 let wiki_1.path = substitute(fnamemodify($VIM, ':h'), '[/\\]\+$', '', '') . '/pangea/vimwiki'
     62 let wiki_1.path_html = substitute(fnamemodify($VIM, ':h'), '[/\\]\+$', '', '') . '/pangea/vimwiki_html'
     63 let g:vimwiki_list = [wiki_1]
     64 " ================================
     65 " 状态栏提示
     66 " ================================
     67 set laststatus=2             " lightline插件,底部状态栏
     68 set noshowmode
     69 augroup LightlineColorscheme " 让lightline配色方案与VIM配色方案联动
     70   autocmd!
     71   autocmd ColorScheme * call s:lightline_update()
     72 augroup END
     73 function! s:lightline_update()
     74   if !exists('g:loaded_lightline')
     75     return
     76   endif
     77   try
     78     let current_main_theme = get(g:, 'colors_name', '')
     79     if current_main_theme =~# 'evening'
     80       let g:lightline = {'colorscheme': 'Tomorrow_Night'}
     81     elseif current_main_theme =~# 'morning'
     82       let g:lightline = {'colorscheme': 'Tomorrow'}
     83     endif
     84     call lightline#init()
     85     call lightline#colorscheme()
     86     call lightline#update()
     87     catch
     88   endtry
     89 endfunction
     90 " ================================
     91 " 小小输入法外挂模式下使用
     92 " ================================
     93 set imdisable          " 关闭输入法管理,手动管理输入法状态
     94 let g:yong_vim = substitute(fnamemodify($VIM, ':h'), '[/\\]\+$', '', '') . '/yong/w64/yong-vim.exe'
     95 let g:input_toggle = 0 " 记录输入法中/英文状态
     96 let g:input_toggle_timer = 0
     97 
     98 function! Yong_set_input_toggle(channel, output)
     99  let g:input_toggle = a:output
    100 endfunction
    101 
    102 function! Yong2en_timer(timer)
    103   if g:input_toggle_timer == 0
    104     return
    105   endif
    106   let g:input_toggle_timer = 0 " 记录中/英状态,并切换至英文输入模式
    107   call job_start(g:yong_vim . " 1 -w",{'out_cb': 'Yong_set_input_toggle'})
    108 endfunction
    109 
    110 function! Yong2en()
    111   let g:input_toggle_timer = 1
    112   call timer_start(200,'Yong2en_timer')
    113 endfunction
    114 
    115 function! Yong2zh()
    116   let g:input_toggle_timer = 0
    117   if g:input_toggle != 0 " 如果之前输入法为中文状态则将其切换为中文状态
    118     call job_start(g:yong_vim)
    119     let g:input_toggle = 0
    120   endif
    121 endfunction
    122 
    123 autocmd GUIEnter * call Yong2en()
    124 autocmd InsertLeave * call Yong2en()
    125 autocmd InsertEnter * call Yong2zh()
    View Code
  5. 配置文件gvimrc
     1 set guifont=Consolas:h19:cANSI:qDRAFT
     2 set guifontwide=新宋体:h19:cANSI:qDRAFT
     3 colorscheme evening      " 配色方案
     4 set guioptions-=m        " 不显示菜单
     5 set guioptions-=T        " 不显示工具栏
     6 set guioptions-=L        " 不显示左侧滚动条
     7 set guioptions-=r        " 不显示右侧滚动条
     8 set relativenumber       " 使用相对行号
     9 set ignorecase smartcase " 开启聪明的搜索方案
    10 set ambiwidth=double     " 不明宽度字符占两倍字宽
    11 set formatoptions+=mM    " 处理中文折行与拼接问题
    12 "set textwidth=78         " 设置文本的最大宽度
    13 set breakindent          " 折行后延续行保持缩进
    14 au GUIEnter * simalt ~x  " 最大化窗口
    15 set lines=35             " 设置gvim窗口行数
    16 set columns=97           " 设置gvim窗口列数
    17 winpos 0 0               " 设置gvim窗口位置
    18 " ================================
    19 " 插件配置
    20 " ================================
    21 highlight VimwikiHeader1 guifg=#FF0000 gui=bold
    22 highlight VimwikiHeader2 guifg=#FFC000 gui=bold
    23 highlight VimwikiHeader3 guifg=#92D050 gui=bold
    24 highlight VimwikiHeader4 guifg=#00B0F0 gui=bold
    25 highlight VimwikiHeader5 guifg=#CC99FF gui=bold
    26 highlight VimwikiHeader6 guifg=#FFFFFF gui=bold
    View Code
posted @ 2022-10-28 16:07  偊偊而步  阅读(369)  评论(0)    收藏  举报