例如,我经常使用Vim编写MediaWiki文档,您不能在其中将换行符放在任何地方(与Markdown不同)。因此,我不得不写很多字符的行。
这可能导致很长的行(超过200个字符)甚至是很长的行(超过1000个字符)。我觉得在Vim中使用它很尴尬。一个示例是,如果我想在1000个字符行的中间进行编辑,则需要将光标移动500次。仍然很尴尬。
还有更好的方法来解决这个问题吗?更好的运动键?某种“假包装”(文本的行为就像
w
,但文件中没有/
一样),还是其他?“ #1 楼
您可以使用g
系列命令移至可见屏幕区域的边界。例如,g $移动到屏幕的右边缘(不一定是行的结尾)。 gj将光标向下移动到屏幕上显示的一行(不一定向下一行)。也许您可以重新绑定箭头键: br />
或者有些人也直接将k和j重新绑定:
nnoremap <Up> gk
nnoremap <Down> gj
对于插入模式,可以使用:
nnoremap k gk
nnoremap j gj
或:
inoremap <C-k> <C-o>gk
inoremap <C-j> <C-o>gj
另外,如果使用
:set wrap
,Vim会换行,因此您可以看到所有的线。您还可以使用set showsbreak=+
来显示+
,以指示Vim正在包装。命令。例如,200 |将转到列位置200。评论
...和g5j一样往下跳5。
–吗?
2015年2月3日,18:53
@yo'我想你是说5gj
–马丁·图尔诺伊(Martin Tournoij)
2015年2月5日在17:23
@Carpetsmoker奇怪;对于大多数命令,只要命令本身是最后一个,则前缀和数字的顺序无关紧要。在这里它不是:-/
–吗?
2015年2月6日,9:50
@yo',好吧,在g5j中,首先看到g5,在应用j之前,它会跳到下一个5。这就是为什么它无法执行5gj的原因。
– Shahbaz
2015年3月2日14:17
nnoremap命令在“普通”模式下起作用,但在“插入”模式下,inoremap命令不起作用。有什么线索吗?
–路易斯·德·索萨(Luísde Sousa)
20年5月2日在16:49
#2 楼
Vim支持软包装,只需启用set wrap
即可,它将包装超出可见屏幕的长行。您可以使用gj
和gk
分别在此类换行线上向上/向下移动。#3 楼
当我处理很长的线时,最大的痛点是与不同的线长有关。也就是说,在行尾附近上下移动可将窗口向左或向右滚动。通过设置
virtualedit=all
可以避免这种情况,它允许您将光标移动到很长一段时间之后行结尾。#4 楼
正如其他人所说的,您可以使用g +来移动。但是,当行很长时,多次按gj向下移动并不符合人体工程学。我在
.vimrc
中添加了以下内容,以简化操作:通过按住Command键来排成一行。在其他系统上,您可以尝试使用D
或M
代替Alt或A
代替Control代替C
。
评论
您可能还需要设置display = lastline以避免在屏幕末尾出现空白@行。