一、vim ~/.vimrc 进入配置文件 若是不知道vimrc文件在哪,可以使用 :scriptnames 来查看 set nu #行号 set tabstop=4 #一个tab为4个空格长度 set ai #设置自动缩进 syntax on #高亮 二、基本 空格键 向右移动一格 x 删除后面的字符 X 删除前一个字符 删除3个字符就是3x dd:删除一行 D 删除到行尾 caw:改写单词 c 至关于 d 变为编辑模式 J:删除换行符,使下一行并上来。 nJ:链接后面的n行 u:撤销上一次操做 U:撤销当前行的全部修改 ctrl+r:对撤消的撤消 i 在光标前插入 I 在行首插入 a 在光标后插入 A 在行末插入 o:在当前行的下面另起一行,并变为插入模式 O:在当前行上面另起一行,变为插入模式 Ctrl+o:临时变成命令模式(一次而已) :e!:放弃更改,而后至关于从新打开 :help:帮助,可用ZZ退出帮助窗口 vim中Nyy能够复制光标后的N行。有时咱们不容易得出行数,这时能够用作标记的方法来制定复制范围: 1. 在开始行上输入ma做一个标记a 2. 移动到结束行,输入y'a会复制当前行到标记a之间的文本。d'a会删除。 或者是v进入可视模式,再13G跳转到相应行,y便可。 :10,20y 回车便可,相应的删除也是如此 :10,20d (此方法比上面两种方法更简单) :10,20 m 30 把10行到20行的内容,剪切到30行以后 :10,20 co 30 把10行到20行的内容,复制到30行以后 将光标放在 { 处,而后输入v%就能够把大括号中内容选定 若是光标放在第一个s上,想删除到“(”为止,则输入dt(就能够了,t(的做用是跳到下一个"("前。 ctrl +n 自动补全 ctrl + p 也同样 :ab hw hello world 用一个缩写字符串代替一个长的字符串,此处用 hw 代替 hello world %: 移动到与制匹配的括号上去(),{},[],<>等 ' 移动到上一次的修改行 fx 向右跳到本行字符x处(x能够是任何字符) Fx 向左跳到本行字符x处(x能够是任何字符) tx 和fx相同,区别是跳到字符x前 Tx 和Fx相同,区别是跳到字符x后 # 到与当前单词相同的上一个单词上, * 到与当前单词相同的下一个单词上 若是你要重复键入一个短语或一个句子, 也有一种快捷的方法。Vim有一种记录宏的机制。你键入"qa"开始把一段宏记录入寄存器变量`a'中。 按下来你能够象日常同样键入你要的操做, 只是这些操做都会被Vim记录进它命名为`a'的宏中, 再次再下"q"键, 就结束了宏`a'的录制。当你要重复执行你刚才记录的那些操做时只要使用"@a"命令。共有26个可用的寄存器供你记录宏。 使用宏你能够重复多个不一样的操做。而不只仅是插入文本了。若是你要进行某种重复的操做, 记着要用这一招呀。 :abbr hte the :abbr hw Hello World 输入先面的单词时,自动用后面的替换。 三、移动: b、3b、w、3w:向前\后移动几个单词,标点也算一个单词。相应的大写状态为不含标点,即只把空格和换行符做为单词间隔符。 $:移动到行尾 3$:移动到3行后的行尾 ^:移动到行首,0也是 +:移到下一行的行首 -: 移到上一行的行首 f:搜索命令,小写时向后搜索(用来定位)如 fx:定位到下一个x上。 Fx:定位到上一个x上,重复时,可用;或, 不过 , 表示反方向 %:跳到相对应的括号上,编程时经常使用 33G:跳转到33行 此时按``能够返回到原来行 gg:文件头 G: 文件尾 30%:跳转到文件的30%处 "H"意为Home, "M"为Middle, "L"为Last. 当前屏幕的上中下位置,大小写皆可 Ctrl+G:显示当前位置 set number:设置显示行号,set nonumber:关闭显示 :set ruler 设置在窗口右下角显示行号,与上面的好处是,节省空间 ctrl+u\d 向上\下滚动半屏 ctrl+e\y 向上\下滚动一行 ctrl+b\f 向上\下滚动一屏 这个比较实用,记住。 zz:将当前行滚动于屏幕中间,方便查看上下文 zt置顶,zb置尾 /string 查找string,回车后,按n键能够跳到下一个,N上一个,另外按/键后,按上下键能够找到之前查找的记录,一样的 :也有记录 ?/string 同上,默认向上查找 :set ignorecase 大小写无关 :set noignorecase 大小写敏感 * :查找下一个光标所在单词 #是查找上一个 :set hlsearch 高亮显示查找结果 :set nohlsearch 取消高亮 :nohlsearch 去掉当前显示的高完(一次性) `` 上次光标停靠的行 % 匹配到相应括号处 >> 向右移动本行一段距离 << 向左移动本行一段距离 3<< 把下面3行(包括本行),向左移动一段距离 :20,30>> 把20行到30行向右移动一段距离 四、小幅改动: :%s/str1/str2/g 替换每一行的 str1为 str2 :10,20s/str1/str2/g 替换从行10到行20之间的 str1为 str2 :10,$s/str1/str2/g 替换从行10到最后一行之间的 str1为 str2 :s/str1/str2/g 替换当前行的 str1为 str2 . 重复执行命令 :10,$ w test2.cpp 取行10到最后一行内容,保存到test2.cpp :r class/User.hpp 读取文件中的内容,插入到当前行的后面 dw:删除一个单词(光标后部分) 不如:daw实用 d4w:删除4个单词 d$:删除当前光标到行尾 d^:删除当前光标至行首 d换成c效果是同样的,只是操做完会变成insert模式 dnw: 删除N个单词 dnj: 向下删除n行 dnk: 向上删除n行 X:删除左边的字符,至关于<-键,x删除当前字符 D:至关于d$ C:至关于c$ s:至关于c1 S:至关于cc r:替换当前字符,但不会进入insert模式 3r:把后面3个字符替换掉 R:替换模式 .:重复上一次操做 v:进入Visual模式 V:进入可视行模式,好比 Vjjd 删除3行 Ctrl+v:可视块模式 P:粘贴至光标前 p:粘贴至光标后 3P:粘贴3次 "2p 粘贴最后第二次的删除的内容 yy:复制一行 yaw: 复制一个单词,光标在单词任意位置 ynw: 复制N个单词 ynj: 向下复制n行 ynk: 向上复制n行 自动缩进: :set cindent(全部的set均可以简写为se,虽然只节省了一个字符, 译者注) 须要注意的是cindent控制缩进量是经过shiftwidth选项的值, 而不是经过tabstop 的值, shiftwidth的默认值是8(也就是说, 一个缩进为8个空格, 译者注), 要改变默认的设置, 可使用":set shiftwidth=x"命令, 其中x是你但愿一个缩进量表明的空格的数目. { = 到前一个空行上 } = 到下一个空行上 五、VIM的一些插件: c.vim :若是是用root帐号的,把文件复制到/usr/share/vim/vim70中解压没有用的,不存在 $HOME/.vim 这个目录,没办法,只能新建个目录,而后把压缩包cp到这个目录,再unzip便可。在 ~/.vimrc 中 写入 filetype plugin on :e! 返回上次保存后的状态 Ctrl+z:暂停vi,回到Unix提示符,再输入fg便可回到vi。 ^回到行首,光标位于行首字母处;0回到行首,光标位于行首字母前。$回到行尾,光标位于行尾字母处。 nb:向前移动n个单词,nw:向后移动n个单词。光标位于单词的第一个字母处。 nw这个操做很慢,不知何故。 以空格、标点符号与单词的分界为分隔符。(几个连续的标点视为一个单词) 一样的,也可使用nB,nW,只是这里只使用空格作为分隔符。 相换两个相邻字母的位置:x、p s:删除一个字符,并进入编辑模式。 S:删除一整行,进入编辑模式,至关于cc。 ns:删除后面n个字符,并进入编辑模式。 ~:更改字母的大小写,同时光标进入到下一个字符。 n~:把后面n个字母的大小写状态改变。 dw:删除单词后面部分 db:删除单词前面部分。 若是要删除整个单词(光标位于单词中间的话),能够 dbw\wdb de:相似于dw,删除单词后面的部分(只删除到本单词结尾,dw会删除掉单词后面的空格) dE:删除的范围包括标号在内的单词结尾。 e:至关于w,向后移动一个单词。不一样的是,w移动到单词第一个字符上,e移动到单词最后一个字符上。 因此ea,能够给本单词追加内容。 D:d$ 的简写,一样的,C:c$的简写。 U:会恢复一整行原先的面貌,即最原始的样子。 Y:至关于yy,不一样于D与C的操做方法。 .:重复上一个命令。 除了O/o,插入命令(A,a,I,i)接受数值参数,如:5Ihello,而后按ESE键。会在行首输入5个链接的hello nr:替换后面n个字符。 nJ:合并下面的n行(从本行算起)。 ynl:向后复制n个字符。 e/E:到单词的结尾。
Ctrl+p重复上一次命令 Ctrl+a跳到第一个字符前 Ctrl+x同上但再按一次会重新回到原位置 Ctrl+b前移一个字符不删除字符状况下 Ctrl+h删除前一个字符 Ctrl+u删除提示符前的全部字符 Ctrl+w同上 Ctrl+d删除提示符后一个字符或exit或logout Ctrl+e转到字符尾部 Ctrl+f后移一个字符 Ctrl+k删除提示符后所有字符 Ctrl+k取消 ctrl+r向前查找用过的命令 Ctrl+o Ctrl+y Ctrl+i Crtl+m这4个没搞清楚怎么用 <TAB> 命令补齐 CTRL-I 等同于按制表符<TAB>键 CTRL-W 不是删除光标前的全部字符, 它删除光标前的一个单词 CTRL-P 是recall出上一个命令 <===> CTRL-N 是recall出下一个命令 ESC-F 光标向前步进一个单词 ESC-B 光标向后步进一个单词 CTRL-M 等同于回车键 CTRL-O 等同于回车键 CTRL-V 使下一个特殊字符能够插入在当前位置, 如CTRL-V <TAB> 能够在当前位置插入一个<TAB>字符, 其ASCII是9, 不然通常状况下按<TAB>结果是命令补齐 CTRL-C 撤消当前命令行的编辑, 另起一行. CTRL-S 暂时冻结当前shell的输入 CTRL-Q 解冻 ESC-c 使下一个单词首字母大写, 同时光标前进一个单词, 如光标停留在单词的某个字母上, 如word中的o字母上, 则o字母变大写. 而不是w ESC-u 使下一个单词全部字母变大写, 同时光标前进一个单词, 同上, 如光标在o字母上, 则ord变大写, w不变. ESC-l 同ESC-U, 但使之全变为小写. 把bash全部的ctrl组合键试了一遍,现总结以下(如下出现的全部键都是ctrl组合键): 1. U K Y U将光标(不包括)之前的字符删除 K将光标(包括)之后的字符删除 Y将刚才删除的字符粘出来 2. D H D将光标处的字符删除 H将光标前的一个字符删除 3. A E A将光标移动到行首 E将光标移动到行尾 4. F B F将光标向右移动一个字符的位置 B将光标向左移动一个字符的位置 5. N P N下一个命令 P上一个命令 6. L L清屏 7. R R搜索之前输入过的命令 8. T T将光标处的字符和光标前一个字符替换位置 基本功: 用上下键看命令的历史 左右键区修改内容 tab补齐命令名字或者目录,文件名字,不是惟一的多按2次,会出来列表 !ls 重复运行最后一条以’ls’开头的命令,若是先ls -l 而后ls -lcrt,那么!ls,至关于ls -lcrt ls abc.txt vi !$ 第二行的vi !$至关于vi abc.txt,!$等于上一个命令的参数, ‘$’ 是根据上下文来讲的最后一行,列等。 ctrl键组合 ctrl+a:光标移到行首。 ctrl+b:光标左移一个字母 ctrl+c:杀死当前进程。 ctrl+d:退出当前 Shell。 ctrl+e:光标移到行尾。 ctrl+h:删除光标前一个字符,同 backspace 键相同。 ctrl+k:清除光标后至行尾的内容。 ctrl+l:清屏,至关于clear。 ctrl+r:搜索以前打过的命令。会有一个提示,根据你输入的关键字进行搜索bash的history ctrl+u: 清除光标前至行首间的全部内容。 ctrl+w: 移除光标前的一个单词 ctrl+t: 交换光标位置前的两个字符 ctrl+y: 粘贴或者恢复上次的删除 ctrl+d: 删除光标所在字母;注意和backspace以及ctrl+h的区别,这2个是删除光标前的字符 ctrl+f: 光标右移 ctrl+z : 把当前进程转到后台运行,使用’ fg ‘命令恢复。好比top -d1 而后ctrl+z ,到后台,而后fg,从新恢复 esc组合 esc+d: 删除光标后的一个词 esc+f: 往右跳一个词 esc+b: 往左跳一个词 esc+t: 交换光标位置前的两个单词。
###vimdiff高级用法shell
vimdiff tokyo1.txt tokyo2.txt
一、 vimdiff file1 file2 终端下输入该命令进入vim,垂直分隔窗口进行比较 二、 vimdiff -o file1 file2 水平分隔窗口进行比较 三、 ctrl+w (j,k,h,l) 上下左右切换光标所在的窗口(括号中表示能够是其中之一,按下ctrl+w,放开ctrl再按j,k,h,l) 四、 ctrl+w (J,K,H,L) 上下左右移动光标所在窗口的位置 五、 zo 和 zc 打开折叠区 和 关闭折叠区 六、 ]c 和 [c 将光标移动到下一个不一样区 和 上一个不一样区 七、 do 和 dp 将光标所在不一样区域同步为另外一个文件该位置的内容 和 将光标所在不一样区域内容同步到另外一个文件该位置 八、 :diffu[!] vim下更新当前比较窗口,比较状态下修改文件后,可调用该命令[中括号不为命令部分,若是加!表示若是外部修改了文件,则从新加载比较] 九、 :diffo[!] vim下关闭当前窗口比较状态,若是加!则关闭全部窗口的比较状态 十、:diffs file1 vim下加入file1和当前光标所在窗口进行比较,水平分隔窗口 十一、:vert diffs file1 vim下加入file1和当前光标所在窗口进行比较,垂直分隔窗口 十二、:difft vim下将光标所在窗口变为比较窗口
###🔱多行首行插入编程
:%s/^/#/ :%s/^/TAB/ :% s/^/\/\//g 在所有内容的行首添加//号注释 :2,50 s/^/\/\//g 在2~50行首添加//号注释 :2,50 s/^\/\///g 在2~50行首删除//号
###☋vim列模式vim
ctrl+v, 选择行 而后shift i,A,c 进行编辑 完成后,esc 所选的列已经更新
###☪vim分屏bash
:o . //打开当前的文件目录 :vsp //横向拆分 :sp //纵向拆分两个窗口
###多文件编辑spa
查看最近编辑的文件 :ls 最近文件上、下切换 :bp ## :bn 多文件分tab :h tab-page