vim快捷键 在vim下可使用经常使用的箭头键 可是 还有其它键可让你更快的达到目标 hjkl 这是代替箭头键功能的 H M L 跳到屏幕的顶上 中间 下方 w 跳到下一个单词的开始 e 跳到单词的结束 b 向后跳 gg 跳到文件的开始 G 跳到文件的结束 10gg 或10G 跳到第10行 ta 跳到下一个a 前面 fa 跳到下一个a 大写的意思相反 另外还有%(跳到文件的%多少) 和|(跳到第几列) 不过我不多用 上面的均可以加上数字前缀 表示第几个匹配 另外看文件时 除了pageup pagedown外还有其它的快速键 如CTRL-F 向前一页 CTRL-B 向后一页 上面不是重要的 CTRL-D 向下半页 CTRL-U 向上半页我以为更实用 这样看文章时就不会跳转出错 另外还有 CTRL-E 向下一行 CTRL-Y 向上一行 ^ 行首 $行尾 0 第一个字符 另外上面也做为vim其它命令的定位符 如删除d dt) 一直删除到这行的) 另外 懂了跳转键后 那删除或是复制时就再也不是以行为单位了 能够指定到某个条件 我以为这是新手成长的必要方法 另外还有ctrl-t ctrl-i ctrl-] 若是已经使用了ctags 或是cscope建立索引文件的话 那看代码时非常方便 跳转到函数、变量定义处: [+ctrl+i 跳转到函数、变量和#define [+ctrl+d 跳转到#define处 ctrl+i 向前跳到前几回光标位置 ctrl+o 向后跳到后几回光标位置 函数体跳转: [[ ]] [] ][ {} 2009-07-07 17:31 补充 如何选中括号中的内容 进行: 将光标移至括号内,按shift+v进入行选模式,而后 i{ - 选小括号中内容,不包括小括号 a{ - 选小括号中内容,包括小括号 ib - 选中括号中内容,不包括括号 ab - 选中括号中内容,包括括号 i{ - 选大括号中内容,不包括大括号 a{ - 选大括号中内容,包括大括号 :h text-objects 下面还有些相关的tips,未所有验证: vi{ 选中{}中间的内容,不包括{} va{ 选中{}中间内容,包括{} vi( 选中()中间内容 vi< 选中<>中间内容 vi[ 选中[]中间内容 vit 选中中间的内容 vi” 选中”"中间内容 vi’ 选中”中间的内容 vis 选中一个句子 vib 选中一个block viw选中一个单词 vip 选中一个段落 在normal模式下光标停在某个字符上ga能够查看该字符的ascii码 #复制删除粘贴的操做:按V(shift+v),进入可视模式,jk上下选择须要的行,而后按 y 复制 d 删除 x 剪切 p 粘贴 可视模式很好用,例如想把两行的全部单词变成小写,按V而后按j或k选中这两行,按gu便可 #跳到行首按0,但实际更好用的是^, 跳到行首非空白字符 #折行前空出4字符显示折行标识 set foldcolumn=4 #折叠或展开(在折叠的那一行左右移动光标也可展开折叠) za #删除光标所在行所处的范围的折叠 zd #当在:set foldmethod=marker后,折行会把{{{和}}}之间的内容折叠 #不在单词中间断行。 设置了这个选项后, 若是一行文字很是长, 没法在一行内显示完的话, 它会在单词与单词间的空白处断开, 尽可能不会把一个单词分红两截放在两个不一样的行里。 set lbr #sw是shiftwidth的缩写,表缩进列数 fx把光标移动到该行的下个x字符上,这个x也能够是一个汉字,;重复fx操做。Fx把光标移动到该行的上一个x字符上。 gg光标定位到第一行开头,G定位到最后一行开头 H光标跳到当前窗口显示文本的第一行 M光标跳到当前窗口显示文本的中间一行 L光标跳到当前窗口显示文本的最后一行 g*查找包含当前单词的全部单词(*只查找与当前单词精确匹配的单词), -d光标下跳半屏,文本上滚半屏 -u光标上跳半屏,文本下滚半屏 -e文本向上滚动一行 zz屏幕滚动使得当前行成为屏幕的中间一行 normal模式下按J删除此行末尾的换行符,从而合并两行 :e!从新读进上次保存的此文件内容 :ab myname william_djj 之后再编辑时键入myname,而后空格或回车myname串就会被william_djj代替 :r !date 在当前位置插入系统时间(linux下的date命令),同理当前位置插入某文件的内容就是 :r filename :set ignorecase 查找时取消case sensitive :set noignorecase 查找时case sensitive ############ 使用tags ################### 如下命令递归当前目录下的全部文件建立tags文件 ctags -R . vim打开当前目录下的任意一文件,命令模式下键入下面语句以指定刚才建立的tags的位置,之后就能够在不一样文件间查阅函数 set tags=..\tags #分割窗口显示当前函数的定义 -w ] ########################################## 若是插件目录下有echofunc.vim,用如下命令生成tags,之后编辑代码函数名后打“(“时有参数提示。 $ ctags -R –fields=+lS . :Tlist打开左边一个taglist的窗口,显示symbols。要注意的是在windows下若是tags文件路径中有空格或中文会报找不到tags文件的错误, +w+w 或者+w+left/right 窗口切换 +] 进入光标所指的symbol的定义(若是用鼠标也是+鼠标左键,跟SI的用法同样) +t 返回第一个用+t 跳转位置,注意+o是跳回上一个视图,而+t是跳回上一次按+]的位置 #如下命令分裂出一个窗口显示定义处 ptag 函数名 #如下命令关闭刚才打开的分裂窗口 pclose #垂直分裂窗口打开一文件 vsplit 文件名 #水平分裂窗口打开一文件 split 文件名 变量名写成\name表示匹配模式 停在某个括号上按%,跳到匹配的括号处,#if跳到匹配的#else或#endif处 set fdm=syntax折叠函数体 双击]日后逐个函数跳读,双击[往前逐个函数跳读 #解决乱码 set fileencodings=ucs-bom,utf-8,cp936,gb18030,big5,euc-jp,euc-kr,latin1 #在vim下对比两个文件,原来打开了fnpro.c,如今和fnpro.c.bak对比 #垂直分割 :vert diffsplit fnpro.c.bak #水平分割 :diffsplit fnpro.c.bak #跳到下一个不一样之处 :]c #跳到上一个不一样之处 :[c #展开折叠:zo #折叠:zc #不论何种状况下-o均可以上一次跳转的地方 #查看变量和函数的申明 [i #如下为查看vim环境参数makeprg的值的例子: :set makeprg? #从新对文件代码进行缩进 gg=G 跳转到函数、变量定义处: [+ctrl+i 跳转到函数、变量和#define [+ctrl+d 跳转到#define处 ctrl+i 向前跳到前几回光标位置 ctrl+o 向后跳到后几回光标位置 函数体跳转: [[ ]] [] ][ {} 2009-07-07 17:31 补充 如何选中括号中的内容 进行: 将光标移至括号内,按shift+v进入行选模式,而后 i{ - 选小括号中内容,不包括小括号 a{ - 选小括号中内容,包括小括号 ib - 选中括号中内容,不包括括号 ab - 选中括号中内容,包括括号 i{ - 选大括号中内容,不包括大括号 a{ - 选大括号中内容,包括大括号 :h text-objects 下面还有些相关的tips,未所有验证: vi{ 选中{}中间的内容,不包括{} va{ 选中{}中间内容,包括{} vi( 选中()中间内容 vi< 选中<>中间内容 vi[ 选中[]中间内容 vit 选中中间的内容 vi” 选中”"中间内容 vi’ 选中”中间的内容 vis 选中一个句子 vib 选中一个block viw选中一个单词 vip 选中一个段落 vim文件跳转 若是使用vim打开了多个文件,如vim file1 file2 ... fileN 能够经过 :n 或 :prev来跳转到前一个或者后一个文件 还能够经过 :first或:last来跳转到第一个和最后一个文件 若是你只打开一个文件,如vim file1 而后在使用过程当中,经过 :e file2编辑了第二个文件,这时, :prev是不起做用的 能够用 :e#返回上一个编辑的文件 不管哪两种方式均可以用 :bN跳转到打开的第N个文件 如:b1跳转到第一个打开的文件
快捷键学习2linux
1、移动光标 1、左移h、右移l、下移j、上移k 2、向下翻页ctrl + f,向上翻页ctrl + b 3、向下翻半页ctrl + d,向上翻半页ctrl + u 4、移动到行尾$,移动到行首0(数字),移动到行首第一个字符处^ 5、移动光标到下一个句子 ),移动光标到上一个句子( 6、移动到段首{,移动到段尾} 7、移动到下一个词w,移动到上一个词b 8、移动到文档开始gg,移动到文档结束G 9、移动到匹配的{}.().[]处% 10、跳到第n行 ngg 或 nG 或 :n 11、移动光标到屏幕顶端H,移动到屏幕中间M,移动到底部L 12、读取当前字符,并移动到本屏幕内下一次出现的地方 * 13、读取当前字符,并移动到本屏幕内上一次出现的地方 # 2、查找替换 1、光标向后查找关键字 #或者g# 2、光标向前查找关键字 *或者g* 3、当前行查找字符 fx, Fx, tx, Tx 4、基本替换 :s/s1/s2 (将下一个s1替换为s2) 5、所有替换 :%s/s1/s2 6、只替换当前行 :s/s1/s2/g 7、替换某些行 :n1,n2 s/s1/s2/g 8、搜索模式为 /string,搜索下一处为n,搜索上一处为N 9、制定书签 mx, 可是看不到书签标记,并且只能用小写字母 10、移动到某标签处 `x,1旁边的键 11、移动到上次编辑文件的位置 `. PS:.表明一个任意字符 *表明一个或多个字符的重复 正则表达式的内容将会在后续文章中整理 3、编辑操做 1、光标后插入a, 行尾插入A 2、后插一行插入o,前插一行插入O 3、删除字符插入s, 删除正行插入S 4、光标前插入i,行首插入I 5、删除一行dd,删除后进入插入模式cc或者S 6、删除一个单词dw,删除一个单词进入插入模式cw 7、删除一个字符x或者dl,删除一个字符进入插入模式s或者cl 8、粘贴p,交换两个字符xp,交换两行ddp 9、复制y,复制一行yy 10、撤销u,重作ctrl + r,重复. 11、智能提示 ctrl + n 或者 ctrl + p 12、删除motion跨过的字符,删除并进入插入模式 c{motion} 13、删除到下一个字符跨过的字符,删除并进入插入模式,不包括x字符 ctx 14、删除当前字符到下一个字符处的全部字符,并进入插入模式,包括x字符,cfx 15、删除motion跨过的字符,删除但不进入插入模式 d{motion} 16、删除motion跨过的字符,删除但不进入插入模式,不包括x字符 dtx 17、删除当前字符到下一个字符处的全部字符,包括x字符 dfx 18、若是只是复制的状况时,将12-17条中的c或d改成y 19、删除到行尾可使用D或C 20、拷贝当前行 yy或者Y 21、删除当前字符 x 22、粘贴 p 23、可使用多重剪切板,查看状态使用:reg,使用剪切板使用”,例如复制到w寄存器,”wyy,或者使用可视模式v”wy 24、重复执行上一个做用使用. 25、使用数字能够跨过n个区域,如y3x,会拷贝光标到第三个x之间的区域,3j向下移动3行 26、在编写代码的时候可使用]p粘贴,这样能够自动进行代码缩进 27、 >> 缩进全部选择的代码 28、 << 反缩进全部选择的代码 29、gd 移动到光标所处的函数或变量的定义处 30、K 在man里搜索光标所在的词 31、合并两行 J 32、若不想保存文件,而从新打开 :e! 33、若想打开新文件 :e filename,而后使用ctrl + ^进行文件切换 4、窗口操做 1、分隔一个窗口:split或者:vsplit 2、建立一个窗口:new或者:vnew 3、在新窗口打开文件:sf {filename} 4、关闭当前窗口:close 5、仅保留当前窗口:only 6、到左边窗口 ctrl + w, h 7、到右边窗口 ctrl + w, l 8、到上边窗口 ctrl + w, k 9、到下边窗口 ctrl + w, j 10、到顶部窗口 ctrl + w, t 11、到底部窗口 ctrl + w, b 5、宏操做 1、开始记录宏操做q[a-z],按q结束,保存操做到寄存器[a-z]中 2、@[a-z]执行寄存器[a-z]中的操做 3、@@执行最近一次记录的宏操做 6、可视操做 1、进入块可视模式 ctrl + v 2、进入字符可视模式 v 3、进入行可视模式 V 4、删除选定的块 d 5、删除选定的块而后进入插入模式 c 6、在选中的块同是插入相同的字符 I<String>ESC 7、跳到声明 1、[[ 向前跳到顶格第一个{ 2、[] 向前跳到顶格第一个} 3、]] 向后跳到顶格的第一个{ 4、]] 向后跳到顶格的第一个} 5、[{ 跳到本代码块的开头 6、]} 跳到本代码块的结尾 8、挂起操做 1、挂起Vim ctrl + z 或者 :suspend 2、查看任务 在shell中输入 jobs 3、恢复任务 fg [job number](将后台程序放到前台)或者 bg [job number](将前台程序放到后台) 4、执行shell命令 :!command 5、开启shell命令 :shell,退出该shell exit 6、保存vim状态 :mksession name.vim 7、恢复vim状态 :source name.vim 8、启动vim时恢复状态 vim -S name.vim
DrawIt.vim 快捷键学习正则表达式
Supported Features <left> move and draw left <right> move and draw right, inserting lines/space as needed <up> move and draw up, inserting lines/space as needed <down> move and draw down, inserting lines/space as needed <s-left> move left <s-right> move right, inserting lines/space as needed <s-up> move up, inserting lines/space as needed <s-down> move down, inserting lines/space as needed <space> toggle into and out of erase mode > draw -> arrow < draw <- arrow ^ draw ^ arrow v draw v arrow <pgdn> replace with a \, move down and right, and insert a \ <end> replace with a /, move down and left, and insert a / <pgup> replace with a /, move up and right, and insert a / <home> replace with a \, move up and left, and insert a \ \> draw fat -> arrow \< draw fat <- arrow \^ draw fat ^ arrow \v draw fat v arrow \a draw arrow based on corners of visual-block \b draw box using visual-block selected region \e draw an ellipse inside visual-block \f fill a figure with some character \h create a canvas for \a \b \e \l \l draw line based on corners of visual block \s adds spaces to canvas <leftmouse> select visual block <s-leftmouse> drag and draw with current brush (register) \ra ... \rz replace text with given brush/register \pa ... like \ra ... \rz, except that blanks are considered to be transparent
Gvim 删除命令shell
刪除沒有內容的空行 g/^$/d 刪除包含有空格組成的空行 g/^\s*$/d 以空格或tab開頭到結尾的空行 g/^[ |\t]*$/d :%s/r//g 删除DOS方式的回车^M :%s= *$== 删除行尾空白 :%s/^(.*)n1/1$/ 删除重复行 :%s/^.{-}pdf/new.pdf/ 只是删除第一个pdf :%s/<!--_.{-}-->// 又是删除多行注释(咦?为何要说「又」呢?) :g/s*^$/d 删除全部空行 :这个好用有没有人用过还有其余的方法吗? :g!/^dd/d 删除不含字符串'dd'的行 :v/^dd/d 同上 (译释:v == g!,就是不匹配!) :g/str1/,/str2/d 删除全部第一个含str1到第一个含str2之间的行 :v/./.,/./-1join 压缩空行 :g/^$/,/./-j 压缩空行 ndw 或 ndW 删除光标处开始及其后的 n-1 个字符。 d0 删至行首。 d$ 删至行尾。 ndd 删除当前行及其后 n-1 行。 x 或 X 删除一个字符。 Ctrl+u 删除输入方式下所输入的文本。 ^R 恢复u的操做 J 把下一行合并到当前行尾 V 选择一行 ^V 按下^V后便可进行矩形的选择了 aw 选择单词 iw 内部单词(无空格) as 选择句子 is 选择句子(无空格) ap 选择段落 ip 选择段落(无空格) D 删除到行尾 x,y 删除与复制包含高亮区 dl 删除当前字符(与x命令功能相同) d0 删除到某一行的开始位置 d^ 删除到某一行的第一个字符位置(不包括空格或TAB字符) dw 删除到某个单词的结尾位置 d3w 删除到第三个单词的结尾位置 db 删除到某个单词的开始位置 dW 删除到某个以空格做为分隔符的单词的结尾位置 dB 删除到某个以空格做为分隔符的单词的开始位置 d7B 删除到前面7个以空格做为分隔符的单词的开始位置 d) 删除到某个语句的结尾位置 d4) 删除到第四个语句的结尾位置 d( 删除到某个语句的开始位置 d) 删除到某个段落的结尾位置 d{ 删除到某个段落的开始位置 d7{ 删除到当前段落起始位置以前的第7个段落位置 dd 删除当前行 d/text 删除从文本中出现“text”中所指定字样的位置, 一直向前直到下一个该字样所出现的位置(但不包括该字样)之间的内容 dfc 删除从文本中出现字符“c”的位置,一直向前直到下一个该字符所出现的位置(包括该字符)之间的内容 dtc 删除当前行直到下一个字符“c”所出现位置之间的内容 D 删除到某一行的结尾 d$ 删除到某一行的结尾 5dd 删除从当前行所开始的5行内容 dL 删除直到屏幕上最后一行的内容 dH 删除直到屏幕上第一行的内容 dG 删除直到工做缓存区结尾的内容 d1G 删除直到工做缓存区开始的内容