[英]How do I move to end of line in Vim?
我知道通常如何在命令模式下移动,特别是跳转到行等。但是跳转到我当前所在行末尾的命令是什么?
"只是$ (美元符号)键。 您可以使用A移动到行尾并切换到编辑模式 (Append)。 要跳转最后一个非空白字符,可以先按g然后按_键。
顺便说一下, A的反面是I (在行首插入模式)。 仅按^会将光标置于该行的第一个非空白字符处。
正如很多人所说:
但是也:
g _转到最后一个非空白字符。
g $转到屏幕行的末尾(当缓冲区行跨多个屏幕行时)
主要问题 - 行尾
$到行尾,保持命令模式
A到行尾,切换到插入模式
相反 - 行首(技术上是第一个非空白字符)
^到行首,保持命令模式
I (大写 i) 到行首,切换到插入模式
进一步 - 行首(从技术上讲,第一列与空格无关)
0 (零)到行首,保持命令模式
0i (零后跟小写 i)进入行首,切换到插入模式
对于那些开始学习 vi 的人,这里有一个很好的 vi 介绍,它并排列出了典型的 Windows GUI 编辑器光标移动和快捷键的 vi 命令。
如果当前行环绕可见屏幕到下一行,则可以使用g$到达行的末尾。
我在标准终端中看不到用于 vim 的 macbook 热键。 希望它会帮助某人。 对于 macOS 用户(在 macbook pro 2018 上测试):
fn + ← - 移动到起始行
fn + → - 移动到结束行
fn + ↑ - 向上移动页面
fn + ↓ - 向下移动页面
fn + g - 将光标移动到文档的开头
fn + shift + g - 将光标移动到文档末尾
对于最后两个命令,有时需要点击两次。
美元符号:$
按A从行尾开始进入编辑模式。
'End' 键的优点是它可以在正常和插入模式下工作。
'$' 仅适用于普通/命令模式,但它也适用于经典的 vi 编辑器(很高兴知道 vim 不可用时)。
在许多情况下,当我们在一个字符串中时,我们被双引号括起来,或者在编写语句时我们不想按转义键并使用箭头键转到该行的末尾并按分号( ;
)只是为了结束行。 在vimrc文件中写入以下行:
imap <C-l> <Esc>$a
这条线说什么? 它将 Ctrl+l 映射到一系列命令。 这相当于你一次按下Esc (命令模式)、 $ (行尾)、 a (追加)。
还要注意line (或者可能是物理 line)和screen line之间的区别。 一行由行尾字符 ("\\n") 终止。 屏幕行是在终端或屏幕中显示为一行字符的任何内容。 如果您的物理线长于屏幕宽度,这两者就会分开,这在编写电子邮件等时很常见。
这种区别也体现在行尾命令中。
如果你总是喜欢后一种行为,你可以像这样重新映射键:
:noremap 0 g0
:noremap $ g$
或者有一个显而易见的答案:使用End键转到行尾。
可能不相关,但如果你想在当前行之后开始一个新行,你可以在行中的任何地方使用 o 。
最简单的选择是键入$ 。 如果您正在处理文本块,您可能会喜欢使用命令{和}来分别前后移动段落。
我习惯于 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- ,但这并不能粘贴到这样的地方。
如何移动到包括空格在内的行尾?
"
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.