Quantcast
Channel: Vimタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 5608

vimでsequential-command.el の の機能を実現したい。

$
0
0

Emacs使っていた頃につかっていた sequential-command.el (の <C-a><C-e>のみ)みたいなこと出来ないかな?と、vimrcを頑張ってみた。
いろいろ拙いし考慮漏れもあるような気がするけどとりあえず出来たので書いてみる。

※車輪が再開発されている可能性は否めない

.vimrc(一部)
"ローテート {{{function!s:save_pos()letb:cur_pos = getpos('.')endfunction
autocmd WinEnter,BufRead * call<SID>save_pos()nnoremaphh:<C-u>call<SID>save_pos()<CR>nnoremapjj:<C-u>call<SID>save_pos()<CR>nnoremapkk:<C-u>call<SID>save_pos()<CR>nnoremapll:<C-u>call<SID>save_pos()<CR>nnoremapbb:<C-u>call<SID>save_pos()<CR>nnoremap<C-b><C-b>:<C-u>call<SID>save_pos()<CR>nnoremap<C-f><C-f>:<C-u>call<SID>save_pos()<CR>function!s:rotate_in_buffer(r)let pos_f= getpos('.')if pos_f == [b:cur_pos[0],1,1,b:cur_pos[0]]
        call setpos('.',b:cur_pos)returnendif

    execute a:r ? "normal! ^" : "normal! $"let pos_s= getpos('.')if pos_f == pos_s
        execute a:r ? "normal! 0" : "normal! G$"let pos_t = getpos('.')if pos_s == pos_t
            ifa:r
                execute "normal! gg^"elsecall setpos('.',b:cur_pos)endifendifelseifa:r&& pos_s[1] ==b:cur_pos[1] && pos_f[2] < pos_s[2]
        execute "normal! gg^"endifendfunctionnnoremap<silent><C-a> :<C-u>call<SID>rotate_in_buffer(1)<CR>nnoremap<silent><C-e> :<C-u>call<SID>rotate_in_buffer(0)<CR>"}}}

<C-a>を上書いてしまっていいのかは謎い。


Viewing all articles
Browse latest Browse all 5608

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>