我知道一般如何在命令模式下移动,特别是跳到行等。但是,跳到我当前所在行的末尾的命令是什么?
vimtutor
。大概他们不知道吗?
我知道一般如何在命令模式下移动,特别是跳到行等。但是,跳到我当前所在行的末尾的命令是什么?
vimtutor
。大概他们不知道吗?
Answers:
只是$ (美元符号)键。您可以使用A移至行尾并切换至编辑模式(追加)。要跳到最后一个非空字符,你可以按下g然后_键。
顺便说一句,A是I(在行首插入模式)。只需按^将光标放置在该行的第一个非空白字符处。
g_
g_
变
正如许多人所说:
但是也:
|
命令可以计数,例如3 |。跳到第三列。
g _ 转到最后一个非空白字符。
g $ 转到屏幕行的末尾(当一条缓冲线包裹在多条屏幕行上时)
b
转到上一个单词的开头,这根本不是一回事。大致等于$ge
。
_
和g_
进行视觉/粘贴,$
也将复制/删除新行(LN)字符。
g_
这是我发现到达实际行尾的唯一方法。
$
即使为我包裹也走到了行尾。我知道没有任何设置可以调整其行为。也许您的.vimrc已将其重新映射到g$
?
主要问题-行尾
$ 转到行尾,保持在命令模式
A 转到行尾,切换到插入模式
相反-行首(技术上是第一个非空白字符)
^ 移至行首,仍处于命令模式
I (大写i)转到行首,切换到插入模式
进一步-行的开始(技术上第一列,与空白无关)
0 (零)转到行的开头,保持在命令模式下
0i (零后接小写字母i)开始行,切换到插入模式
对于开始学习vi的人来说,这是对vi的很好的介绍,它通过并排列出典型Windows GUI编辑器光标移动和快捷键的vi命令。
I
是不是0
,但是^
,因为两者I
并^
转到第一个非空行的字符,但0
趋于零柱(顾名思义)。
0
?(转到该行的第一个字符(=列0)并进入插入模式)
0i
。:-)
在许多情况下,当我们在字符串中时,我们会用双引号将其括起来,或者在编写语句时,我们不想按Escape键并使用箭头键转到该行的末尾并按分号(;
)即可结束线。在vimrc文件中写以下行:
imap <C-l> <Esc>$a
该行怎么说?它将Ctrl + l映射到一系列命令。等效于您同时按Esc(命令模式),$(行尾),a(附加)。
vim
当然,您可以用更少的时间做更多的事情。@razorxpress,将稍作调整imap <C-l> <Esc>A
,使Ctrl + l等效于按Esc
(退出插入模式)然后按A
(附加到行尾)。
inoremap <C-l> <C-o>A
还要注意线(或物理线)和屏幕线之间的区别。行以行尾字符(“ \ n”)结尾。屏幕行是指在终端或屏幕上显示为一行字符的任何内容。如果您的物理线长于屏幕宽度,则两者会分开,这在编写电子邮件等时非常常见。
区别也显示在行尾命令中。
如果您始终喜欢后一种行为,则可以像这样重新映射键:
:noremap 0 g0
:noremap $ g$
g_
是物理行的最后一个非空白。屏幕线怎么样?
还是有一个明显的答案:使用End键转到行尾。
我习惯了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控制字符代码:
http://www.physics.udel.edu/~watson/scen103/ascii.html
您也可以同时执行Ctrl-V + Ctrl-,但这并不能很好地粘贴到这样的地方。