Vim 中如何交换单词位置?

Vim、Emacs配置和使用
回复
abnick
帖子: 17
注册时间: 2007-01-05 16:12

Vim 中如何交换单词位置?

#1

帖子 abnick » 2008-08-06 10:49

Vim是我喜欢的编辑器,高效,快捷。

有个问题,一直找不到好的解决方案:

在编辑中,常常会有要把后一个单词移到前面,就是交换一下两个单词的位置。在Emacs中,可以用

代码: 全选

M-t
很方便地交换单词位置。(Emacs中叫做Transpose). 不知在Vim中如何实现。 我现在只能用

代码: 全选

dwwP
,但这样在行尾就不适用了。请问各位大虾,有什么高招吗?

(或者有什么插件吗?)
sarrow
帖子: 403
注册时间: 2007-10-27 1:04

#2

帖子 sarrow » 2008-08-06 11:48

你做一个map,放在vimrc中就可以了啊!
abnick
帖子: 17
注册时间: 2007-01-05 16:12

#3

帖子 abnick » 2008-08-06 11:56

sarrow 写了:你做一个map,放在vimrc中就可以了啊!
是map dwwP 吗?

代码: 全选

dwwP
需要把光标放在第一个单词的词首,而且这个单词在行尾时就不能用了。

有没有办法可以实现像在Emacs中, 按 Alt + t 直接交换两个单词呢?
头像
Fermat618
帖子: 728
注册时间: 2008-12-28 16:01

Re: Vim 中如何交换单词位置?

#4

帖子 Fermat618 » 2011-07-06 21:27

我写了个,你过来吧
viewtopic.php?f=68&t=337540
爱因斯坦会弹钢琴
爱因斯坦会拉小提琴
爱因斯坦会骑自行车
头像
lilydjwg
论坛版主
帖子: 4249
注册时间: 2009-04-11 23:46
系统: Arch Linux
联系:

Re: Vim 中如何交换单词位置?

#5

帖子 lilydjwg » 2011-07-06 21:36

Fermat618 写了:我写了个,你过来吧
viewtopic.php?f=68&t=337540
这么老的帖子都被你找到了。。。
nedzqbear
帖子: 1
注册时间: 2011-08-25 15:35

Re: Vim 中如何交换单词位置?

#6

帖子 nedzqbear » 2011-08-25 15:41

刚刚写了个交换的脚本,可以交换列。

111 222 col3 col4 col5

222 111 col3 col4 col5

详细见:http://www.vim.org/scripts/script.php?script_id=3708

:em11
头像
lilydjwg
论坛版主
帖子: 4249
注册时间: 2009-04-11 23:46
系统: Arch Linux
联系:

Re: Vim 中如何交换单词位置?

#7

帖子 lilydjwg » 2011-08-26 15:17

nedzqbear 写了:刚刚写了个交换的脚本,可以交换列。

111 222 col3 col4 col5

222 111 col3 col4 col5

详细见:http://www.vim.org/scripts/script.php?script_id=3708

:em11
还没 transwrd.vim 好玩呢。而且 transwrd.vim 是支持 repeat.vim 的(使用 . 重复)。
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙

Re: Vim 中如何交换单词位置?

#8

帖子 eexpress » 2011-08-26 15:33

dwwp or dwep
● 鸣学
头像
Fermat618
帖子: 728
注册时间: 2008-12-28 16:01

Re: Vim 中如何交换单词位置?

#9

帖子 Fermat618 » 2011-08-31 22:13

nedzqbear 写了:刚刚写了个交换的脚本,可以交换列。

111 222 col3 col4 col5

222 111 col3 col4 col5

详细见:http://www.vim.org/scripts/script.php?script_id=3708

:em11
偶尔有这样的需要,我会用调用外部的awk来实现。如果是编辑表格,vimwiki里面有编辑表格的功能,比较好用。
爱因斯坦会弹钢琴
爱因斯坦会拉小提琴
爱因斯坦会骑自行车
头像
lilydjwg
论坛版主
帖子: 4249
注册时间: 2009-04-11 23:46
系统: Arch Linux
联系:

Re: Vim 中如何交换单词位置?

#10

帖子 lilydjwg » 2011-08-31 22:24

Fermat618 写了:
nedzqbear 写了:刚刚写了个交换的脚本,可以交换列。

111 222 col3 col4 col5

222 111 col3 col4 col5

详细见:http://www.vim.org/scripts/script.php?script_id=3708

:em11
偶尔有这样的需要,我会用调用外部的awk来实现。如果是编辑表格,vimwiki里面有编辑表格的功能,比较好用。
这种功能貌似 ^Vd<move>p 就可以了
头像
Fermat618
帖子: 728
注册时间: 2008-12-28 16:01

Re: Vim 中如何交换单词位置?

#11

帖子 Fermat618 » 2011-09-01 9:54

lilydjwg 写了:
Fermat618 写了:
nedzqbear 写了:刚刚写了个交换的脚本,可以交换列。

111 222 col3 col4 col5

222 111 col3 col4 col5

详细见:http://www.vim.org/scripts/script.php?script_id=3708

:em11
偶尔有这样的需要,我会用调用外部的awk来实现。如果是编辑表格,vimwiki里面有编辑表格的功能,比较好用。
这种功能貌似 ^Vd<move>p 就可以了
这个的确可以。

都讨论那个插件去了,我得给我的那个插件打打广告了。Transpose words http://www.vim.org/scripts/script.php?script_id=3656 正好实现楼主想要的功能,不多不少,即模拟Emacs中的M-t交换单词.
爱因斯坦会弹钢琴
爱因斯坦会拉小提琴
爱因斯坦会骑自行车
回复