You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在VIM中将文本块转为项目符号/编号列表并简化操作?

在Vim中高效转换文本为列表(含切换与编号功能)

当然可以!Vim 里完全能轻松实现你要的这些功能,甚至比你现在的手动块插入操作高效得多。我来一步步给你拆解实用方案:

快速将选中文本转为无序列表(项目符号)

你不需要再用可视块模式手动插入,直接可视化选中目标文本后,执行以下命令:

:'<,'>s/^/* /
  • <,'>是Vim自动识别的选中范围,不用手动输入;
  • s/^/* /表示把每一行的行首替换成* (星号加空格),一键完成所有行的项目符号添加。

如果觉得输入命令麻烦,还可以给这个操作绑定快捷键。在你的~/.vimrc(Neovim用户是init.vim)里添加:

vnoremap <leader>ul :s/^/* /<CR>

以后只要选中文本,按<leader>ul(默认leader是反斜杠\,你也可以自定义)就能直接转成无序列表。

实现项目符号与普通文本的切换

要一键切换“带项目符号/普通文本”,可以写个简单的Vim函数并绑定快捷键。同样在配置文件里加:

vnoremap <leader>tl :call ToggleListItem()<CR>

function! ToggleListItem()
    " 匹配行首的* ,有则移除,无则添加
    execute ":'<,'>s/^\(\* \)\?\(.*\)/\=submatch(1) == '' ? '* '.submatch(2) : submatch(2)/"
endfunction

选中文本后按<leader>tl,就能自动判断每行是否有项目符号:有就去掉,没有就加上,完美实现切换需求。

生成编号列表

要把选中文本转为编号列表,可视化选中后执行:

:'<,'>s/^/\=line('.') - line("'<") + 1 . '. '/

这个命令会计算每行在选中区域里的相对位置,自动生成从1开始的编号(比如1. xxx、2. xxx...)。

同样可以绑定快捷键简化操作:

vnoremap <leader>ol :s/^/\=line('.') - line("'<") + 1 . '. '/<CR>

选中后按<leader>ol就能快速生成编号列表。

这些配置都可以永久保存在你的Vim配置文件里,以后用起来就顺手多了~

内容的提问来源于stack exchange,提问作者Daniel Kim

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 07:26:08