gVim-vim如何实现sublime text 2编辑器的多重选择(Multi-Selection)功能呢?

gVim-vim如何实现sublime text 2编辑器的多重选择(Multi-Selection)功能呢?

浮生未歇 发布于 2017-03-05 字数 142 浏览 1153 回复 2
algjasjjgasl;    aabb  ; xxx
algjasjjgasl; bbdd ; xx
algjasjjgasl; ccdd; xxx

aabb ;
bbdd ;
ccdd;

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

泛泛之交 2017-07-06 2 楼

function! s:my_multi_copy()
let reg_save = @@
normal! gvy
if !exists('b:select_store')
let b:select_store = ""
endif
let b:select_store .= @@ . "n"
let @@ = reg_save
endfunction

function! s:reset()
if exists('b:select_store')
unlet b:select_store
endif
endfunction
map <Plug>(my_select-copy) :<C-U>call <SID>my_multi_copy()<CR>
map <Plug>(my_select-reset) :<C-U>call <SID>reset()<CR>
nmap <A-Space> <Plug>(my_select-reset)
vmap <Space> <Plug>(my_select-copy)
nmap <A-v> :let @@=b:select_store<CR>

基本实现了想要的功能,有待完善。
1. <A-Space>清除变量b:select_store (有必要)
2. visual mode或select mode选中一块区域
3. <Space> 复制选中的区域到变量b:select_store
4. 重复步骤2,3 (鼠标选中一块区域,左手按空格键很方便)
5. <A-v>将b:select_store复制到寄存器@@中
之后粘贴就可以啦
上面这段代码还有很多需要完善的地方,恳请各位大牛不吝赐教!

虐人心 2017-03-19 1 楼

可以尝试一下块选择,不过跟平台不同,快捷键稍微有点不同

Linux: Ctrl-v
Windows: Ctrl-q

然后通过 hjkl 来移动你的选取就可以垂直的来选择文本块,
上个图:

在 第一行 <s 的位置 键入快捷键,然后移动光标到 第二行 i 处

移动期间可以使用任何移动的快捷键,比如 f t G 之类的
确定选择块内容后,使用 y 即可复制

然后到需要的位置 p 即可

祝好,
斑驳敬上