转到行首而不在VI中打开新行


229

很久以来,我已经习惯了SHIFTOSHIFT$移至中的一行的开始和结束vi

但是SHIFTO,更多的是在光标上方打开新行。

是否有任何命令会将您带到行首?


9
除了以下答案外,在Vim中键入:help left-right-motions可获取大量信息。
ngm 2012年

一本关于vim的好书:在vim中练习。^ 0
陈思秀

Answers:


426

您可以在正常模式下使用^0(零)移动到行首。

^将光标移动到一行的第一个非空白字符
0始终将光标移动到“第一列”

您也可以使用Shifti移动并切换到插入模式。


5
同样,Shift + A和Shift + I分别到达行尾和行首,并切换到插入模型
bibstha 2014年

7
对我来说,按^通常不是那么容易,因为压制0w连续。
DXDXY



12

您可以使用0^移至行首。
并且可以使用Shift+ I移至开头并切换至编辑模式(插入)。


您的回答基本上是正确的,但有一点需要注意。Shift+I^将光标移至该行文本的开头。如果该行n的开头有制表符,它将光标移至该n*tabstop + 1列。While 0将光标移到该行的第一列
narendra-choudhary

10

还有另一种方法:

|

这就是“管道”-在ANSI布局的退格键下找到的符号。

Vim quickref(:help quickref)将其描述为:

N      |      to column N (default: 1)

换行呢?

如果你有包装线启用,0并且|将不再带你到屏幕行的开头。在这种情况下,请使用:

g0

再次,vim quickref doc:

 g0   to first character in screen line (differs from "0"
      when lines wrap)

现在,我明白了它为什么起作用了。谢谢。我在想。我认为这比0因为|$处于同一密钥上要好。
WesternGun


6

将光标移动到插入模式的开头或结尾

  • I -将光标移动到当前行的第一个非空白字符,并启用插入模式。
  • A -将光标移动到当前行的最后一个字符,并启用插入模式。

I等效于^+ i。类似地A等同于$+ a

只需将光标移到开头或结尾

  • ^ -将光标移动到当前行的第一个非空白字符
  • 0 -将光标移动到当前行的第一个字符
  • $ -将光标移动到当前行的最后一个字符


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.