关于编辑:如何在Vim中移动到行尾?

How do I move to end of line in Vim?

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


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

a相反的是(在行首插入模式),作为一个旁白。只按^将把光标放在行首。


正如许多人所说:

  • $让您到达终点

而且:

  • ^_使您进入行中的第一个非空白字符,以及
  • 0(零)使您到达行首,包括空白


  • $移动到行中的最后一个字符。
  • g _转到最后一个非空白字符。

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


主要问题-行尾

$转到行尾,保持命令模式

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

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

^转到行首,保持命令模式

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

进一步-行首(技术上是第一列,与空白无关)

0(零)转到行首,保持命令模式

0I(零后接小写I)进入行首,切换到插入模式

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

适用于Windows用户的vi编辑器


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


在许多情况下,当我们在字符串中时,我们用双引号括起来,或者在编写语句时,我们不希望按Escape键并用箭头键转到该行的末尾,然后按分号(;键)结束该行。在VIMRC文件中写入以下行:

1
imap <C-l> <Esc>$a

这句台词怎么说?它将ctrl+l映射到一系列命令。它相当于一次按esc(命令模式)、$(行尾)、a(附加)。


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

"$"仅在正常/命令模式下工作,但它也在经典vi编辑器中工作(很好地知道VIM何时不可用)。


美元符号:$


还要注意线条(或者物理线条)和屏幕线条之间的区别。行以行尾字符("")结尾。屏幕行是指在终端或屏幕中以一行字符的形式显示的内容。如果你有比屏幕宽度长的物理线条,这两个会分开,这在写电子邮件等时很常见。

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

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

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

1
2
:noremap 0 g0
:noremap $ g$


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


a以从行尾开始进入编辑模式。


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


最简单的选择是输入$。如果您使用的是文本块,您可能需要使用命令 ,以便分别前后移动段落。


我习惯于在插入模式下(从Windows和我认为是Linux中使用)回到行首和行尾,这是Mac不支持的。这特别令人恼火,因为当我在远程系统上使用VIM时,我也不容易做到。经过一些痛苦的尝试和错误之后,我想出了这些.vimrc行,它们做同样的事情,但在行首绑定ctrl-a,在行尾绑定ctrl-d。(出于某种原因,我猜ctrl-e是保留的,或者至少我找不到绑定它的方法。)享受吧。

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

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

http://www.physics.udel.edu/~watson/scen103/ascii.html

你也可以按ctrl-v+ctrl-键,但这并不能粘贴到像这样的地方。


我看不到标准终端中使用VIM的MacBook热键。希望它能帮助别人。对于MacOS用户(在MacBook Pro 2018上测试):

fn + - move to beginning line

fn + - move to end line

fn + - move page up

fn + - move page down

fn + g - move the cursor to the beginning of the document

fn + shift + g - move the cursor to the end of the document

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