gpt4 book ai didi

vim - 在 vim 可视模式下移动多行

转载 作者:行者123 更新时间:2023-12-04 13:57:30 26 4
gpt4 key购买 nike

按 v 并在 中进入可视模式后,我想将这些行向上移动几行。解决方案 discussed here不适合我,因为我想在视觉上移动线条,即我不想输入 m:+ n因为我不知道 n 的值.是否有键盘快捷键可以让我移动 已选择 线条在视觉模式下按按键顺序在时间向下或向上一行?

Sample with selected lines

最佳答案

没有内置命令,但您可以使用 :help :move 构建一个。 .

第一次迭代

" move selected lines up one line
xnoremap <somekey> :m-2<CR>

" move selected lines down one line
xnoremap <otherkey> :m'>+<CR>

向上移动

我们想要的是在当前行上方的行和当前行上方的第二行之间移动选择:
             current line - 2 > aaa
current line - 1 > aaa
current line > bbb <
bbb < visual selection
bbb <
ccc
ccc

因此,正确的 ex 命令是 :m-2 .

下移线

当前行不是一个好的起点,因为它是我们选择的第一行,但我们可以使用 '>标记(视觉选择结束):
                                aaa
aaa
current line > bbb <
bbb < visual selection
end of visual selection > bbb <
end of visual selection + 1 > ccc
ccc

因此,正确的 ex 命令是 :m'>+1 .

但是我们失去了我们的选择所以我们必须做 gv在再次移动选择之前取回它。不好。

第二次迭代
" move selected lines up one line
xnoremap <somekey> :m-2<CR>gv

" move selected lines down one line
xnoremap <otherkey> :m'>+<CR>gv

我们简单地附加 gv到我们之前的映射结束。整洁的。但是在我们进行时修复缩进呢?

第三次也是最后一次迭代
" move selected lines up one line
xnoremap <somekey> :m-2<CR>gv=gv

" move selected lines down one line
xnoremap <otherkey> :m'>+<CR>gv=gv

凡附加 =gv我们的映射修复了缩进( :help v_= )并重新选择我们的行。

demo

奖励正常模式映射
" move current line up one line
nnoremap <somekey> :<C-u>m-2<CR>==

" move current line down one line
nnoremap <otherkey> :<C-u>m+<CR>==

关于vim - 在 vim 可视模式下移动多行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41084565/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com