在Vim中将光标移到文件末尾


409

当我想将光标移到Vim中文件的末尾(即最后一行的末尾)时,我必须键入六个击键:

<ESC>G$a- 在我的键盘布局上翻译成ESC+ Shiftg+ Shift4+ a

我怎样才能更有效地做到这一点?

由于我经常在许多不同的机器上工作,所以我不能总是更改.vimrc,因此我在寻找答案而不必编辑或创建该文件。


8
只是要指出,所显示的命令应如下所示:<esc>G$a通过将字母大写来显示移位。您将显示一个$而不是shift + 4,因为无论键盘如何,此键($)的功能都不会改变,但是如果您执行shift + 4,则含义会改变。:)
greduan

3
我通常同意@Eduan,但是在这种情况下,实际上按键也很重要。我都添加了:-)
timss

@Eduan对于效率问题,实际命令并不重要。击键可以。而且由于不同语言之间的键盘布局存在巨大差异,因此我不知道$美式键盘上的位置,很可能对于美国人来说,输入命令$只是一个按键。我想明确地表明对我来说(使用德语键盘)是两次按键。

1
@什么IC。我能理解 只是想指出一点,以便将来您知道。:)
greduan 2013年

Answers:


410

无需在a使用,使用前明确地走到行尾A;
在[count]次行的末尾附加文字

<ESC>GA


3
如果您想保持正常模式,请尝试G)(或<ESC>G)如果您处于插入模式,并且希望在正常模式下结束最后一个字符)。击键次数相同,但最终以普通模式而不是插入模式结束。当我想在最后一个单词上运行一些普通命令而不是插入模式命令或编辑时,我偶尔会发现这很有用。
亚历杭德罗

1
@Alejandro尽管很有用,但它)[count]向前移动句子,因此如果最后一行是,则不会移至行尾This is a test. Foo bar.。但是,它将适用于许多代码,这些代码通常不被视为句子,因此无论如何都会走到最后。
tims

如果您打算写下一行,<ESC> G o将执行回车,并将您置于下一行的插入模式(在文件末尾),从而节省了几次击键。
broc.seib

1
另外,如果您不想切换到插入模式,请使用G$
BladeMight

498

这样更快。只是用这个

:$

16
这不会移到最后一列,而只会移到最后一行
Rajeshwar,2014年

6
如果您只是想快速转到文件末尾并且键盘快捷键搞砸了,这是正确的命令。谢谢!
joemar.ct 2014年

9
:$ + End在这种情况下会做到这一点。
karthik 2015年

1
这需要在末尾输入<ENTER>,而且仍然需要到达该行的末尾,这使得它不再快速。
亚历杭德罗

1
:$绝招!进入文件末尾的问题!谢谢
Sijan Shrestha


39

对于初学者来说,不需要退货。G$会做。而且,通过计数<Esc>a普通模式命令的长度可能会误导您。

但是,您可以根据需要使用Ctrl+ End


8
这是Ctrl-END
部ZMO

我没有End键盘上的-键(如果那是您的意思)。

事实上,由TIMSS显示了答案,我没有很好地计算<ESC>a,因为他或她知道的方式来代替Shift+$, aA

1
@当今大多数笔记本电脑键盘如果没有专用的Home /
End

22

我以为问题是“在vim中将光标移动到文件末尾”?

文件结束:Esc+ 文件 G
开始Esc+ g(或gg如果您已经在命令区域中)


21

转到文件最后一行的最佳方法是使用G。这会将光标移动到文件的最后一行。

转到该行最后一列的最佳方法是 $。这会将光标移动到当前行的最后一列。

这样一来,G$您就可以到达文件的末尾和最后一行。

而且,如果您想在文件末尾进入插入模式,则只需这样做GA。这样,您转到文件的最后一行,并通过追加到最后一列进入插入模式。:)



11

如果您打算写下一行,ESCGo将执行回车,并将您置于下一行的插入模式(在文件末尾),从而节省了几次击键。


6
  • Ctrl + Home =跳转到文件开头
  • Ctrl + End =跳至文件尾

3

这样更快:

<ESC>GA

5
为什么要发布重复的答案,尤其是在没有解释时A
2013年

3

您可以将其映射到.vimrc中的键,例如F3。

inoremap <F3> <Esc>GA

2
尽管可能,但这通常是一个坏主意。而是瞄准肌肉记忆并使用GAG$
tims

不过我仍然赢了1个键:)更严重的是,如果您确实需要快速的vim,学习如何使用.vimrc很有用。
蒂姆

拥有一个完整的地图示例而不是告诉OP去查找它也将是很好的。因为如果找不到它,OP应该怎么做?
FDinoff 2013年

1
您没有“赢得”任何东西,因为您必须远离家乡。此外,如果碰巧使用它,则不能在其他人的配置甚至vi上使用它。您真的没有节省时间。如果有的话,请C-end按照霍布斯的说明使用。
tims

我同意此意见,但我清理映射为你
D.本Knoble

0

我一直在寻找将光标移动到行尾,然后在mac终端上进行编辑的方法,这就是它对我有效的方式。退出编辑模式,输入g_(即'g',然后下划线,前面没有冒号),然后只需按一下'a'键,即可将代码“添加”到脚本中


您是否正在寻找A
D. Ben Knoble

我尝试过A,但效果
欣一

这很奇怪,A基本上等于$a
D. Ben Knoble

0

另一种选择:

:call cursor('.',strwidth(getline('.')))

如果要编写函数,这可能会很有用。另一种情况是当我需要打开特定模板并跳到第一行末尾时,我可以这样做:

vi +"call cursor('.',strwidth(getline(1)))"  notetaking_template.txt

以上也可以完成

vi +"execute ':normal! $'" notetaking_template.txt

也可以看看:

vim-获取当前行的长度


0

如果要在文件类型的末尾粘贴一些剪贴板内容,请执行以下操作:

:$ put +

$ ............ last line
put .......... paste 
+ ............ clipboard
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.