如何在Vim中移动到行尾?

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

921677 次浏览

美元符号:$

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

一个的反面是(在行首插入模式),作为旁白。仅按^将把光标放在该行的第一个非空白字符上。

一个进入编辑模式,从行尾开始。

或者有一个显而易见的答案:使用结束键到行的末尾。

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

'$'仅适用于正常/命令模式,但它也适用于经典的vi编辑器(很高兴知道vim何时不可用)。

正如很多人所说:

  • $让你走到最后

但也:

  • ^_让您找到该行中的第一个非空白字符,并且
  • (零)将您带到行的开头,包括。空格

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

可能不相关,但如果您想在当前行之后开始新行,您可以在行中的任何位置使用o。

  • $移动到该行的最后一个字符。
  • g_转到最后一个非空白字符。

  • g$转到屏幕行的末尾(当缓冲区行跨多个屏幕行包装时)

在许多情况下,当我们在字符串中时,我们会被双引号包围,或者在编写语句时,我们不想按转义并使用箭头键转到该行的末尾并按分号(;)以结束该行。在vimrc文件中写入以下行:

imap <C-l> <Esc>$a

该行说了什么?它将Ctrl+l映射到一系列命令。它相当于您一次按下Esc(命令模式)、$(行尾)、一个(追加)。

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

这种区别也出现在行尾命令中。

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

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

:noremap 0 g0:noremap $ g$

最简单的选择是键入$。如果您正在处理文本块,您可能会喜欢命令{},以便分别向后和向前移动段落。

我习惯了Home/End让我在插入模式下开始和结束行(在Windows中使用,我认为Linux),Mac不支持。这特别烦人,因为当我在远程系统上使用vim时,我也不能轻易做到这一点。经过一些痛苦的尝试和错误,我想出了这些.vimrc行,它们做同样的事情,但绑定到Ctrl-A作为行的开始,Ctrl-D作为行的结束。(出于某种原因,我想Ctrl-E是保留的,或者至少我找不到绑定它的方法。)享受。

:imap <Char-1> <Char-15>:normal 0<Char-13>:imap <Char-4> <Char-15>:normal $<Char-13>

这里有一个很好的图表,用于ASCII控制字符代码,也用于其他代码:

您也可以执行Ctrl-V+Ctrl-,但这并不能粘贴到这样的地方。

主要问题-行的末尾

$到行的末尾,保持在命令模式

一个到行尾,切换到插入模式

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

^到行的开始,保持在命令模式

(大写i)进入行的开头,切换到插入模式

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

(零)进入行的开头,保持在命令模式

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

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

用于Windows用户的vi编辑器

我看不到标准终端中使用vim的macbook热键。希望它能帮助某人。对于macOS用户(在macbook pro 2018上测试):

fn+-移动到开始行

fn+-移动到结束行

fn+-向上移动页面

fn+-向下移动页面

fn+ g -将光标移动到文档的开头

fn+ 转变 + g -将光标移动到文档末尾

对于最后两个命令,有时需要点击两次。