vim 中自动换行而不插入换行符

问题描述 投票:0回答:3

如何设置vim自动换行而不插入换行符?

基本上:

  • 我想要一个最大宽度,比如 80 行
  • 当我打出一个段落时,如果一个单词超过了 80 行标记,它应该包裹整个单词(不拆分单词)
  • 如果我输入多于几行,它仍然应该换行
  • 如果我保存文件,我不应该看到任何换行符,除非我在编辑模式下输入时明确按 Enter

我可以通过以下方式获得一些这种行为:

:set textwidth=80
:set wrap

除非这会插入换行符,而我希望它插入换行符。我已经尝试过this,但它不起作用。

vim
3个回答
40
投票

如果您的目标是在插入模式下输入时自动在窗口边缘软换行文本(仅在视觉上)

set number # (optional - will help to visually verify that it's working)
set textwidth=0
set wrapmargin=0
set wrap
set linebreak # (optional - breaks by word rather than character)

如果您的目标是在输入插入模式时自动 硬换行文本(通过在实际文本文件中插入新行)

set number # (optional - will help to visually verify that it's working)
set textwidth=80
set wrapmargin=0
set formatoptions+=t
set linebreak # (optional - breaks by word rather than character)

如果您的目标是在插入模式下输入时自动 在 80 列处自动软换行文本(仅在视觉上):

set number # (optional - will help to visually verify that it's working)
set textwidth=0
set wrapmargin=0
set wrap
set linebreak # (optional - breaks by word rather than character)
set columns=80 # <<< THIS IS THE IMPORTANT PART

后者花了我 2-3 次重要的互联网搜索时间才从这里找到(请读一读 - 写得非常好):https://agilesysadmin.net/how-to-manage-long-lines-在vim中/


5
投票

将窗口宽度减少到大约 80 个字符,

set wrap
set linebreak
应该可以满足您的所有要求。

参见

:help 'wrap'
:help 'linebreak'


0
投票

就我而言,队伍太长了,所以我不得不这样做

cat ../test.log | less

© www.soinside.com 2019 - 2024. All rights reserved.