vim快捷键

on under vim
1 minute read

0x00 vim

0>link
    https://groups.google.com/forum/#!forum/Vim-cn
    http://www.newsmth.net/nForum/#!board/VIM

1>函数折叠与打开
    zM函数全部折叠
    zR折叠全部打开

    在可折叠处:
    zc:折叠
    zC:对所在范围内所有嵌套的折叠点进行折叠
    zo:展开折叠
    zO:对所在范围内所有嵌套的折叠点展开
    [z:到当前打开的折叠的开始处
    ]z:到当前打开的折叠的末尾处
    zj:向下移动,到下一个折叠的开始处.关闭的折叠也被计入
    zk:向上移动,到前一个折叠的结束处.关闭的折叠也被计入

    创建和删除折叠:
    zf:创建折叠.
    eg:
    zf56G:从当前行到56行创建折叠
    10zf:从当前行到后10行创建折叠 
    10zf-:从当前行到前10行创建折叠

    zd:删除光标下的折叠,仅当foldermethod设为manual或marker时有效
    zD:循环删除光标下的折叠,即嵌套删除折叠,仅当foldermethod设为manual或marker时有效
    zE:删除窗口里的所有折叠,仅当foldermethod设为manual或marker时有效

2>代码自动规范缩进
    ggvG
    =
    (python效果不好,有可能让代码不再对齐而出错)

    代码块缩进<C+v>+(选择块)+<>
        <表示代码块向左缩进,>表示代码块向右缩进

3>easymotion插件可3键定位到当前可见屏幕任意字符

4>vim写中文自动换行的处理
    https://wiki.archlinux.org/index.php/Vim_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87)#.E8.87.AA.E5.8A.A8.E6.8D.A2.E8.A1.8C.E6.98.BE.E7.A4.BA
    http://www.cnblogs.com/ayanmw/p/3432005.html
    http://blog.chinaunix.net/xmlrpc.php?r=blog/article&uid=53564&id=2098815
    http://blog.csdn.net/auwzb/article/details/11609363
    最后为实现写md文件可以在textwidth的值处自动换行,在vimrc中加入如下:
        autocmd FileType * setlocal textwidth=111 formatoptions=tcqmM
        (其中的textwidth=111为github pages的博客每行长度,且安装vim13后,上面的*只对md文件有效,如果写成FileType md setlocal...则没有效果,惑不解)

    or
    find ~ -name ftplugin
    vi /root/.vim/bundle/vim-markdown/ftplugin
    修改对应项

5>插入模式下的快捷键
	<c-w>:删除前一个word
	<c-u>:删除当前行光标位置之前的所有字符
	<c-o>D:删除当前行光标位置之后的所有字符
	<c-t>:缩进当前行
	<c-d>:删除当前行缩进

    下面是插入模式的3个字符内移动的快捷键,结合vim-hardtime在vim-hardtime中设置去除Left,Down,Up,Right的禁用
    超过当前光标所在位置的移动用f+j+s+字符+hint,或者f+j+w|b的方法移动(f+j为esc的map)
    需要先查看是否有插件与<c-h>冲突,检查方法为:verbose imap <c-h>,发现auto-pairs插件有关于<c-h>的设置,注释掉就可以
    默认情况下插入模式下<c-h>是backspace功能,参考解决方法:
    http://www.skywind.me/blog/archives/1857

    noremap <c-h> <left>
    noremap <c-j> <down>
    noremap <c-k> <up>
    noremap <c-l> <right>
    inoremap <c-h> <left>
    inoremap <c-j> <down>
    inoremap <c-k> <up>
    inoremap <c-l> <right>
    cnoremap <c-h> <left>
    cnoremap <c-j> <down>
    cnoremap <c-k> <up>
    cnoremap <c-l> <right>


6>命令模式下的快捷键
	<c-b>跳转到最前面
	<c-e>跳转到最后面
	<c-w>删除前一个word
	<c-u>删除光标前所有
	<c-f>打开命令行窗口


7>多行操作
	多行移动
	a)ma+target_line_num+G+3(缩进数)+<+'+a
	b)<c-v>+move_to_target_position+3(缩进数)+<
	c)2(行数)+<<
	多行粘贴
	p:完全相同的粘贴
	]p:在光标处对齐粘贴

8>向上向下滚动
	<c-e>向下滚动
	<c-y>向上滚动
	<c-d>向下半屏
	<c-u>向上半屏
	
9>caps键当esc键和ctrl键一起用
	caps在单独按下时被修改成esc键效果
	caps在按住时被修改成ctrl键效果
	http://askubuntu.com/questions/177824/remapping-caps-lock-to-control-and-escape-not-the-usual-way
	detail:
	first way:
		[!要先安装xcape]
		vim ~/.zshrc and + below command
		setxkbmap -option 'caps:ctrl_modifier' && xcape -e 'Caps_Lock=Escape' &
	another way:
		[!要先安装xcape]
		1)caps lock as control from gnome-tweak-tool
		2)xcape -e 'Control_L=Escape'

10>改变不良习惯
   I=0i
   g_=$h[当前行最后有空白字符时]
   cw=dwi

0x01 vimperator

"3.14.0 (created: 2016/06/07 23:58:16)
imap jf <Esc>
imap fj <Esc>
cmap jf <Esc>
cmap fj <Esc>
" noremap ; <S-;>无效
nmap mm ZZ
noremap J gT
noremap K gt
noremap h <S-Left>
noremap l <S-Right>
source! /root/.vimperatorrc.local

" vim: set ft=vimperator:

set nextpattern=\s*下一页|下一张|下一篇|下页|后页\s*,^\bnext\b,\\bnext\\b,^>$,^(>& gt;|»)$,^(>|»),(>|»)$,\\bmore\\b
set previouspattern=\s*上一页|上一张|上一篇|上页|前页\s*,^\bprev|previous\b, \\bprev|previous\\b,^<$,^(<<|«)$,^(<|«),(<|«)$
nmap [ [[
nmap ] ]]

noremap bl :tabopen http://3xp10it.github.io <CR>
noremap gi :tabopen http://www.github.com/3xp10it <CR>
noremap li :tabopen http://3xp10it.github.io/bookmarks.html <CR>
noremap wo :tabopen http://192.168.3.13:1235/webinfos <CR>
linux, editor, effiency
home
github
archive
category