List Vim中的降价列表

List Vim中的降价列表,list,vim,markdown,List,Vim,Markdown,在标记文件中创建列表时,我想在按时插入一个新项目。我 希望它同时适用于有序列表和无序列表。这意味着,在有序列表中 列表项编号将自动递增。另外,如果我在没有 内容,我想删除该项并添加一个新行,基本上结束列表;这是 当前的行为 我设法实现了一些我想要的功能 使用此自动命令: autocmd Filetype markdown setlocal com=s1:/*,mb:*,ex:*/,://,b:#,:%,:XCOMM,n:>,b:- | set formatoptions=tcroqln

在标记文件中创建列表时,我想在按
时插入一个新项目。我 希望它同时适用于有序列表和无序列表。这意味着,在有序列表中 列表项编号将自动递增。另外,如果我在没有 内容,我想删除该项并添加一个新行,基本上结束列表;这是 当前的行为

我设法实现了一些我想要的功能 使用此自动命令:

autocmd Filetype markdown setlocal com=s1:/*,mb:*,ex:*/,://,b:#,:%,:XCOMM,n:>,b:- | set formatoptions=tcroqln
但该自动命令不适用于有序列表,并且在按下
时不会结束列表 在空白列表项上


可以添加这两个功能吗?

要处理有序列表,您可以像处理
-
符号一样将它们视为注释,只需添加
:setlocal com+=b:1。
这不会自动递增,但无论如何,我认为Markdown在呈现列表时会为您这样做


没有用于结束列表的内置逻辑,但只需按
即可删除自动插入的注释。如果这还不够好,那么
:imap…
映射可以检测到这种情况(通过
部分中调用的函数),然后自动将其删除。

子弹.vim是一个插件,它比修改comments命令容易得多

您可以通过键入“-”插入项目符号列表,下一行将自动插入项目符号

您还可以通过键入“1”插入编号列表,随后的行将自动按顺序编号

自述文件:

vim是一个用于自动项目符号列表的vim插件

用法 在标记或文本文件中,使用-或*启动项目符号列表。按 返回到下一行,将创建一个新的列表项


将以下内容放到
~/.vim/after/ftplugin/markdown.vim

" list markers (*, -, 1.)
function! s:list_marker() abort
  let line = substitute(getline(line('.')), '^\s*', '', '')
  let marker = matchstr(line, '^\([*-]\|\d\+\.\)\s')
  if !empty(marker) && marker == line
    return "\<c-u>"
  endif
  if marker =~ '\d'
    let marker = marker + 1 . '. '
  endif
  return "\<cr>" . marker
endfunction
inoremap <expr><buffer> <cr> <sid>list_marker() 
nmap <buffer> o A<cr>
“列表标记(*,-,1.)
函数!s:list_marker()中止
let line=substitute(getline(line('.'),'^\s*','','')
让marker=matchstr(行“^\([*-]\\\\\d\+\.\)\s”)
如果!空(标记器)&&marker==行
返回“\”
恩迪夫
如果标记=~'\d'
让marker=marker+1
恩迪夫
返回“\”。标记
端功能
inoremap列表_标记()
nmap o A

谢谢你的回答。这可能足够好了,但是没有办法自动增加已排序的列表吗?也许可以通过函数而不是使用Vim的注释功能?我不知道有任何内置的自动增加功能;你可以将其构建到我暗示的
映射中。为什么不使用
1.
来列出它ems;这使得在行中拖沓变得更容易。我有点完美主义。数字递增更容易阅读。我一直在尝试编写一个函数来实现它,但我几乎不知道vimscript,所以我很难做到这一点。但无论如何,我会接受你的答案,我会尝试自己做额外的工作。