如何在 Vim 中移至行尾?

我知道一般如何在命令模式下移动,特别是跳到行等。但是,跳到我当前所在行的末尾的命令是什么?

答案

只是$ (美元符号)键。您可以使用A移至行尾并切换到编辑模式(附加)。要跳过最后一个非空白字符,可以先按g再按_键。

顺便说一句, A的反面是I (在行首插入模式)。仅按^会将光标置于行的开头。

正如许多人所说:

  • $将您带到行尾

但是也:

  • ^_将您带到该行的第一个非空白字符,并且
  • 0 (零)可让您到达行首,包括。空格
  • $移至该行的最后一个字符。
  • g _转到最后一个非空白字符。

  • g $移至屏幕行的末尾(当缓冲行包裹在多条屏幕行上时)

主要问题 - 行尾

$移至行尾,保持命令模式

A转到行尾,切换到插入模式

相反 - 行首(技术上是第一个非空白字符)

^移至行首,保持在命令模式

I (大写 i)转到行首,切换到插入模式

进一步 - 行的开始(技术上第一列,与空白无关

0 (零)转到行首,仍处于命令模式

0i (零后跟小写字母 i)开始行,切换到插入模式

对于开始学习 vi 的人来说,这是对 vi 的很好的介绍,它通过并排列出典型 Windows GUI 编辑器光标移动和快捷键的 vi 命令。

Windows 用户的 vi 编辑器

如果当前行环绕可见屏幕并转到下一行,则可以使用g $到达屏幕行的末尾。

美元符号:$

“结束” 键的优点是它可以在普通模式和插入模式下工作。

“$” 仅在正常 / 命令模式下工作,但在经典的 vi 编辑器中也工作(很高兴知道 vim 不可用时)。

在很多情况下,当我们在字符串中时,我们会用双引号将其括起来,或者在编写语句时,我们不想按 Escape 键并使用箭头键转到该行的末尾并按分号( ; )只是为了结束这一行。在vimrc文件中写以下行:

imap <C-l> <Esc>$a

该行怎么说?它将 Ctrl + l 映射到一系列命令。等效于您同时按Esc (命令模式), $ (行尾)和a (附加)。

还要注意线 (或物理线)和屏幕线之间的区别。行以行尾字符(“\ n”)结尾。屏幕行是指在终端或屏幕上显示为一行字符的任何内容。如果您的物理线长于屏幕宽度,则两者会分开,这在编写电子邮件等时非常常见。

区别也显示在行尾命令中。

  • $0 分别移至物理行或段落的末尾或开头:
  • g $g 0 分别移至屏幕行或段落的末尾。

如果您总是喜欢后一种行为,则可以像这样重新映射键:

:noremap 0 g0
:noremap $ g$

从行尾开始按A进入编辑模式。