LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1569|回复: 7

vim长行中上下移动光标的问题

[复制链接]
发表于 2006-9-11 07:59:28 | 显示全部楼层 |阅读模式
不知道各位有没有办法让光标在vim中较长行上下移动时和记事本,kwrite之类的文本编辑器一样。这个问题不好表述,还是举例比较方便。

例如假设一行只能容下5个字符,现有如下2行文字,光标所在位置为下划线_,vim默认长行回显,将较长的第2行折成2行显示,于是屏幕上总共显示3行:

 1 ,,,,, 第1行
  ,,,,, 第1行,显示为第2行
 2 ..._. 第2行,显示为第3行

如此时按下k,那么会光标就会上移到第1行第4个字符:

 1 ,,,_, 第1行
  ,,,,, 第1行,显示为第2行
 2 ..... 第2行,显示为第3行

如果在记事本,kwrite等编辑器中,光标会移动到被显示为第2行的第4个字符,相当于vim中真实第1行倒数第2个字符:

 1 ,,,,, 第1行
  ,,,_, 第1行,显示为第2行
 2 ..... 第2行,显示为第3行

请教各位,需要如何设定,或者输入那些命令才能让vim中光标像上边那样移动?多谢回帖!
发表于 2006-9-11 09:09:44 | 显示全部楼层
利用gj和gk命令
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-9-12 07:34:57 | 显示全部楼层
多谢指点。不过这种办法有点勉强。假如一个文本中有很多这样的行,移动起来工作量还是太大了。有没有什么办法能一次性设定好?
回复 支持 反对

使用道具 举报

发表于 2006-9-12 09:58:47 | 显示全部楼层
按行和按字符移动本来就是效率低下的事。你可以试试按词、句子或段落移动。搜索一个字符串的方法也比按行移动快。
回复 支持 反对

使用道具 举报

发表于 2006-9-12 15:21:37 | 显示全部楼层
vim 有 easy 模式, 就是只工作于插入模式, 而且上下键也满足楼主的要求. 不过这种模式真的很难用.... 要想用这种模式, 最好在 gvim 下, 否则我都不知道如何进行保存或退出. 而且这还不如干脆用 nano 算了.

也可以把上下的键重新绑定一下, 比如下面这样, 我自己在 gvim 7.0 中试过了, 貌似可以
  1. :nmap <UP> gk
  2. :imap <UP> <ESC>gka
  3. :nmap k gk
  4. :nmap <DOWN> gj
  5. :imap <DOWN> <ESC>gja
  6. :nmap j gj
复制代码
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-9-13 08:52:50 | 显示全部楼层
多谢各位了。其实我只是把一些论文转换成文本在vim中阅读而已。不过这些论文几乎每一段都是那种长行,有的霸占了好几个屏幕,光标往下一移就不知道身在何处了。如果vim中有什么命令将这些长行转换成小于80个字符的短行,麻烦就解决了。可惜我刚刚学会vim中的hjkl……或许我该自己写一个专门断行的小程序来解决我的麻烦。
回复 支持 反对

使用道具 举报

发表于 2006-9-13 09:57:31 | 显示全部楼层
如果你用 Emacs 的话,我知道如何将行转成某一数量的字符。
回复 支持 反对

使用道具 举报

发表于 2006-9-13 09:58:25 | 显示全部楼层
vim很多内建命令可是实现你的要求,比如利用gqap进行段落重排
仔细看看帮助
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表