演示(摘自Wikipedia一阶逻辑):
The adjective "first-order" distinguishes first-order logic from higher-order logic
in which there are predicates having predicates or functions as arguments. In first-order
theories, predicates are often associated with sets. In interpreted higher-order
theories, predicates may be interpreted as sets of sets.
到目前为止一切顺利。但是,当我修改本文时,我可能会决定在中间添加一些内容,例如:
The adjective "first-order" distinguishes first-order logic from higher-order logic
in which there are predicates having predicates or functions as arguments,
or in which one or both of predicate quantifiers or function quantifiers are permitted.
In first-order theories, predicates are often associated with sets. In interpreted higher-order
theories, predicates may be interpreted as sets of sets.
第3行是我想包装的。如果在VIM中进行操作,则需要手动加入行并重新包装整个段落。
任何人都知道如何使VIM自动执行该操作吗?
#1 楼
更简单:a
的'formatoptions'
标志可在插入或删除文本时自动设置段落格式。有关:help fo-table
标志和'formatoptions'
的详细信息,请参见:help autoformat
。两者之间的区别在于,gq
会将光标留在最后一个格式化行的第一个非空白处。 gw
会将光标放回其开始位置。您可以使用
gq
手动重新包装光标当前所在的段落,或者使用gw
手动重新包装整个文档,尽管由于前导,这将使光标移动gwap
。使用自动命令,可以自动进行格式化。下面是一个在退出插入模式时格式化当前段落的示例:您可以浏览
gggwG
下的选项。最相关的标题可能在“各种”子标题下。#2 楼
为了完整起见,我想提到基于插件的选项。如果您使用像ALE这样的东西来支持通过保存时通过美化程序运行缓冲区,则可以让Prettier处理重新包装代码。通过将其放入
~/.vim/ftplugin/markdown.vim
中,我实现了这一点: br /> let b:ale_fixers = ['prettier', 'remove_trailing_lines', 'trim_whitespace']
let b:ale_javascript_prettier_options = '--prose-wrap always'
#3 楼
我会看看:help 'textwidth'
。键入时,它将自动换行。但是,如果您正在编辑一行的中间部分,则此方法将不起作用。 (基本上自动将其格式化为80个字符)如下所示:function! ParagraphToEightyChars()
while (len(getline(".")) > 80)
normal! 0
" Find the first white-space character before the 81st character.
call search('\(\%81v.*\)\@<!\s\(.*\s.\{-}\%81v\)\@!', 'c', line('.'))
" Replace it with a new line.
exe "normal! r\<CR>"
" If the next line has words, join it to avoid weird paragraph breaks.
if (getline(line('.')+1) =~ '\w')
normal! J
endif
endwhile
" Trim any accidental trailing whitespace
:s/\s\+$//e
endfunction
然后我有了一个映射,可以在需要时调用它:
nnoremap <silent><A-J> :call ParagraphToEightyChars()<CR>
此功能还可以与
textwidth
一起使用,用于在代码中格式化注释!只需将光标放在长度超过80个字符的第一行上,然后调用该函数即可。 (注意:我并未将此函数通用化为80以外的其他长度,但是我想只需要更改80和81即可)。
有关更多信息,请参见
formatoptions+=jr
和:help 'textwidth'
。评论
感谢您的分享。当我检查您的设置时,输入时不会自动格式化,对吗?如果是这样,那么它仍然不是最佳选择,不是吗?
–胡冠杰
17 Mar 2 '17 at 15:16
键入时,textwidth将自动格式化。我的功能不会。我更喜欢控制vim何时包装东西,因此对我有用。但是,如果您正在专门寻找按需输入格式器,是的。它不太适合您的工作流程。
– Tumbler41
17 Mar 2 '17 at 15:19
评论
一句话:辉煌!
–胡冠杰
17 Mar 9 '17 at 20:55