Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vim 字选择交换_Vim - Fatal编程技术网

Vim 字选择交换

Vim 字选择交换,vim,Vim,我在vim.wikia中发现了一个非常有用的提示(提示47),建议进行视觉模式交换 要使用此映射:首先,删除一些文本(使用命令,如 正常模式下的daw或dt,或视觉模式下的x)。然后,使用视觉模式 要选择其他文本,请按Ctrl-X。这两段文本 然后应该交换 我的结局是: [some text not to be swapped]New York and Buenos Aires ... [some other text not to be swapped] London and Barcelon

我在vim.wikia中发现了一个非常有用的提示(提示47),建议进行视觉模式交换

要使用此映射:首先,删除一些文本(使用命令,如 正常模式下的daw或dt,或视觉模式下的x)。然后,使用视觉模式 要选择其他文本,请按Ctrl-X。这两段文本 然后应该交换

我的结局是:

[some text not to be swapped]New York and Buenos Aires
...
[some other text not to be swapped] London and Barcelona 
和纽约之间没有空间

这可能是因为我不完全理解(至少可以说)上面的:vnoremap,也不知道如何在其中插入空格


欢迎您的帮助(和解释)

问题是由于末尾的
p
在光标之前粘贴:因为光标位于空格上,粘贴会将其推到行的末尾(是的,现在应该有一个尾随空格)

使用
p
可以修复这个特定用例的映射,“行末尾的文本”,但它会弄乱我猜创建映射的一般情况,“行中某处的文本”

编辑

这个快速而肮脏的函数检查光标是否在行尾,然后再决定它是
p
还是
p
,但是……您最好使用该提示中列出的一个插件

function! Swap()
    normal `.``gvP``
    if col('.') == len(getline('.'))
        normal p
    else
        normal P
    endif
endfunction

xnoremap <F7> <Esc>:call Swap()<CR>
函数!互换
正常`.``gvP``
如果列('.')==len(getline('.'))
正态p
其他的
正态P
恩迪夫
端功能
xnoremap:callswap()

如果您不介意安装插件,有几种插件可以提供此功能,还有更多功能:My。(插件页面有指向其他插件的链接。)

1)很抱歉这么晚才回复:我没想到这么快就能得到答案。。。2) 你的解决方案完全符合我的需要。非常感谢。Vim相关的问题通常会在一两个小时内得到一大堆有效答案,这要感谢一个小而活跃的社区。这次我快速回答:这归结为另一个问题:如何删除,例如,3个单词没有尾随(即第三个)空格?我只找到了一个笨拙的方法:d/。无论如何,我将保留您的“快速且肮脏”解决方案…
viwEEd
将是一种方式,
d3E
(或
bd3E
,如果光标不在第一个单词的第一个字母上)将是另一种方式,
d3t
(或
bd3t
)将是另一种方式。感谢您,我最初的问题让我学到了很多东西。。。再次感谢你的建议。我一定要试一试。
[some text not to be swapped]New York and Buenos Aires
...
[some other text not to be swapped] London and Barcelona 
function! Swap()
    normal `.``gvP``
    if col('.') == len(getline('.'))
        normal p
    else
        normal P
    endif
endfunction

xnoremap <F7> <Esc>:call Swap()<CR>