vim:在当前单词前换行

vim:在当前单词前换行

我在 vim 中写了一段文本,但不想超过 80 个字符的行长限制。现在我在第 72 个字符(一个空格)上开始写一个单词。这个单词在第 82 个字符处结束。有没有一些快速技巧可以将最后一个空格替换为换行符(或以某种方式将最后一个单词移动到新行),并将光标放在该单词的末尾,这样就可以

Esc hhhhhhhhhh i Enter Esc llllllllll i blah blah blah

这将是

Esc magic i blah blah blah

答案1

有很多方法可以做到这一点。

b键返回一个单词,将返回一个“大”单词(例如,b 将在破折号处停止)。因此,您可以按

esc B h r enter

如果你想回到输入模式,你可以这样做

esc B i enter

如果你经常这样做,你可以录制一个宏。要录制宏,请按后面跟着任意字母(你为该字母的注册表分配一个宏)。假设我们想将第一个序列录制为一个宏,并将其分配给注册表。你会这样做:

q z B h r enter q

现在只要你按@z在正常模式下,它会返回一个单词,并用换行符替换它前面的字符。

更多关于宏的信息请点击这里 http://www.thegeekstuff.com/2009/01/vi-and-vim-macro-tutorial-how-to-record-and-play/

答案2

如果将“textwidth”选项设置为 80,Vim 可以自动执行此操作。您可以通过在 .vimrc 或 _vimrc 文件中放入此行来实现:

set textwidth=80

添加文本时,这将在第 80 列或之前换行。它不会重新格式化整个段落。在插入模式下执行此操作的一种方法是执行

<C-O>gqap

其中 <CO> 表示按住 Ctrl 键并输入字母 o。是重新格式化 ( ) 当前段落 ( )gqap的命令。执行该命令后,您将返回插入模式,光标gqap关闭回到之前的位置,但不一定回到句子中的同一位置。您可以在

:help i_CTRL-O
:help gq
:help ap

如果 'textwidth' 处的自动换行功能没有按预期工作,则可能需要更改 'formatoption'。请参阅

:help formatoption
:help fo-table

了解更多信息。

如果你不确定 .vimrc 或 _vimrc 文件在哪里,你可以打开 Vim 并执行

:e $MYVIMRC

相关内容