星期六, 七月 26, 2025

VIM学习笔记 网页验证(W3C Validation)

符合标准的网页开发,可谓是不作恶的底线了。通过生产具有可读性的高质量代码,促成在不同浏览器中达成一致的显示效果,并且关照不同用户群体的可访问性(accessibility)。

可以使用W3C Markup Validation Service,在线验证网页是否符合标准;也可以使用Html Validator插件,在浏览器中验证网页。而更高效的方式,则是使用Nu Html Checker (v.Nu)开源工具,它可以在命令行中离线批量验证多个文件。

vnu_github

安装运行

可以直接从GitHub下载各平台下的可运行程序。

如果您已经安装了Java运行环境,那么可以下载 vnu.jar文件直接运行。

如果您没有安装过Java运行环境,那么可以下载相应操作系统的预编译包,比如vnu.windows.zip,其中内置了的Java系统。

将vnu所在目录,增加到path环境变量中:

vnu_windows_path

在命令行中,执行以下命令,可以显示帮助信息即说明安装成功。

$ vnu --help

vnu_cmd_help

在Mac操作系统下,可以通过Homebrew进行安装:

$ brew install vnu

验证网页

使用以下命令,可以验证在线网页:

$ vnu https://yyq123.github.io/learn-vim/learn-vi-00-00-TOC.html

使用以下命令,可以验证指定文件:

$ vnu filename.html

使用以下命令,可以验证多个文件文件:

$ vnu filename1.html filename2.html

使用以下命令,可以验证当前目录下所有网页文件:

$ vnu --asciiquotes --skip-non-html .

--asciiquotes选项,指定在输出信息中使用ASCII编码的引号(替代默认的Unicode编码的引号);

--skip-non-html选项,仅验证所有扩展名为html、htm、xhtml或xht的网页文件。

默认情况下,命令按照GNU error format格式输出。也可以使用--format选项,指定、xml、json或text格式。

vnu_cmd_out

使用--errors-only选项,将仅显示错误信息,而忽略info和warning信息:

$ vnu --errors-only filename.html

在Vim中调用vnu

在Vim中,可以直接调用vnu来验证当前文件,将在弹出的操作系统命令行中显示输出信息,需要点击回车键来关闭命令行窗口并返回到Vim:

:!vnu --asciiquotes %

vnu_vim_shell

使用vnu进行编译

请将以下代码,保存至~/.vim/after/compiler/w3c-html-validator.vim

let current_compiler = "w3c-html-validator"
CompilerSet makeprg=vnu\ $*\ --asciiquotes\ '%'
CompilerSet errorformat=\"file:%f\":%[0-9]%#\.%c-%l\.%[0-9]%#:\ %m

vimrc配置文件中,指定新建的编译器:

autocmd FileType html,xhtml compiler w3c-html-validator

再次打开HTML文件,使用以下命令即可使用vnu进行验证,并在QuickFix中显示输出信息:

:make

如果已经打开了多个文件,那么使用以下命令则可以对参数(Arguments)列表中的所有文件中进行验证:

:make ##

vnu_make_quickfix

Ver: 250726 | YYQ<上一篇 | 目录 下一篇>

星期一, 七月 21, 2025

VIM学习笔记 快捷键速查表(vim-which-key)

 Vim提供了一种不依赖鼠标的快速高效的编辑体验,通过大量的键盘快捷键,可以快速地进行文本移动、编辑、修改等操作。然而如何记忆和使用种类繁多的快捷键,也形成了另一种挑战。

打开vimrc配置文件,然后使用以下命令,可以列示所有F功能键的当前定义:

:for i in range(1, 12) | execute("map <F".i.">") | endfor

map_list_FunKey

使用以下命令,可以将键盘映射(和修改过的选项),写入到当前目录下的_exrc文件:

:mk

map_list_mk_exrc

更高效的方式,则是使用vim-which-key插件,可以在弹出窗口(popup)中列示当前所有快捷键的定义,大大减轻了记忆各种快捷键的负担。

安装配置

推荐使用minpac等插件管理器,来安装GitHub上的vim-which-key插件。(请参阅官方安装文档

假设使用逗号键,作为前缀键(leader)

let mapleader=","

vimrc配置文件中设置timeoutlen选项,指定在按下leader键后,如果在约定时间后没有进一步的按键操作,则会在弹出窗口中显示快捷键绑定信息:

set timeoutlen=500
nnoremap <silent> <leader> :<c-u>WhichKey '<Space>'<CR>
nnoremap <silent> <localleader> :<c-u>WhichKey  ','<CR>

定义快捷键字典

首先,需要创建一个空字典:

let g:which_key_map = {}

vim-which-key插件能够自动识别已经存在的leader快捷键,你可以为其添加文字描述;使用'name'关键字,可以定义二级字典组,以便于为捷键分类显示。

let g:which_key_map.s = { 'name' : '+source' }
let g:which_key_map.s.v = 'Source-vimrc'
let g:which_key_map.t = { 'name' : '+tab' }
let g:which_key_map.t.v = 'Tab-vimrc'

对于尚不存在的快捷键,也可以直接定义命令和描述:

let g:which_key_map.f = {
      \ 'name' : '+file' ,
      \ 'n' : ['fn' , 'File Name to Clipboard'] ,
      \ 'p' : ['fp' , 'Path Name to Clipboard'] ,
      \ }

更多vim-which-key插件配置代码,请参阅实例

显示快捷键列表

在常规模式下点击前缀键(leader),将在弹出窗口(popup)中显示一级菜单,其中“+”开头的菜单项表示包含子菜单:

Popup

点击“+”后的首字母,比如",b"将显示缓冲区(buffer)子菜单下的快捷键信息:

Group

点击退格键<BACKSPACE>,将返回上一级菜单;点击<ESC>键,将关闭弹出窗口并返回常规模式。

Ver: 250716 | YYQ<上一篇 | 目录 下一篇>