vim 如何将文本向上移动一行(不是 ctrl--e)

ctrl--e其实是向上移动一个自然段,如果只移动一行的命令是什么ctrl-eLZ知道,有没有如同gjgk移动光标一样,移动文本的命令... ctrl--e 其实是向上移动一个自然段,如果只移动一行的命令是什么
ctrl-e LZ 知道,有没有如同 gj gk 移动光标一样,移动文本的命令
展开
 我来答
hqxz556
2023-02-14 · TA获得超过2831个赞
知道大有可为答主
回答量:1686
采纳率:93%
帮助的人:560万
展开全部

Vim 里有几种类型的移动命令,概念比较容易混淆。

移动一般是指移动光标的位置。比如最基本的 j, k 就是移动命令,Vim 术语是“移动(Motion)”。对于比较长的行,在 Vim 里可能显示不下,根据是否自动换行(选项 wrap 控制),这些行可能会显示成许多行。这时 显示行(display line) 和 逻辑行(line) 就有可能不一致,j,k 是针对逻辑行移动的(因此可能看上去像是移动一个自然段),gj, gk 是针对显示行。

另一种“移动”是指移动屏幕,它不移动光标本身。而是类似上下翻页。比如 <ctrl-F> 和 <ctrl-b> 分别对应向下和向上翻页,是您说的 <ctrl-e> 也是这类命令。Vim 术语叫“滚动(Scroll)”。

您既然这么问,那么所谓的“移动文本”,可能不是上面两种意思,而是交换当前行和其它行的位置。这种改变文本内容的行为,在 Vim 里都属于“编辑(Edit)”。

已经有人给出的 ddP 大约是对的,但应该是 ddkP。dd 是删除当前(逻辑)行。这时由于下面的行会向上补,光标实际会落到这行下面那行,因此在 P (粘贴)之前需要用 k 先向上先移动一下。

另外 Vim 命令

:move

是移动文本的,可以简写成 :m,m 后面可跟一个行号,表示移动到指定行号之后。行号也可以用相对行号,比如 +2, -4 之类的。这样

:m -2

就是把当前行移动到此行向上数 2 行之后。实际结果就是向上移动了一行。

用命令一般没 ddkP 方便,但好处是如果你想把连续几行向前挪,可以先选中要挪的部分,然后按 : 并输入上面的命令,这样 Vim 会自动变成:

:'<,'>m -2

m 前面那些是用来表示选中范围的。这个命令的实际效果是把选中的那些行一并向上移动一行。

由于 Vim 大部分命令都是针对逻辑行的,因此可以先关掉自动换行(方法是 :set nowrap),避免产生混乱。

如果您的需要不是这样,可以追问举例具体描述一下。

大雅新科技有限公司
2024-11-19 广告
这方面更多更全面的信息其实可以找下大雅新。深圳市大雅新科技有限公司从事KVM延长器,DVI延长器,USB延长器,键盘鼠标延长器,双绞线视频传输器,VGA视频双绞线传输器,VGA延长器,VGA视频延长器,DVI KVM 切换器等,优质供应商,... 点击进入详情页
本回答由大雅新科技有限公司提供
kyng断了的弦
2012-01-29 · TA获得超过122个赞
知道答主
回答量:173
采纳率:0%
帮助的人:28万
展开全部
按住 shift + j 两行合并.

或 dd 那行 再 p
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
rocky_neu
2012-01-20 · 超过25用户采纳过TA的回答
知道答主
回答量:90
采纳率:0%
帮助的人:46万
展开全部
就是ctrl+e吧。你看到的一行是不是由于自动换行造成的?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友f48a3fe
2012-01-20 · 超过41用户采纳过TA的回答
知道小有建树答主
回答量:87
采纳率:0%
帮助的人:74万
展开全部
ctrl-e就是上移一行。
你说的自然段就是一行,只不过没有换行,是编辑器自动换行的。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
刘宁远5v
2012-01-26 · TA获得超过7281个赞
知道大有可为答主
回答量:9320
采纳率:26%
帮助的人:1308万
展开全部
用dd P 试试
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 3条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式