深圳的设计网站公司,新媒体网站建设,河东天津网站建设,一般网站是用什么框架做的经常处理文本以及经常需要写代码的人#xff0c;都会有自己比较常用的编辑器#xff0c;本人喜欢用Vim#xff0c;理由就是Vim编辑器灵活#xff0c;并且可以达到纯键盘操作#xff0c;使用纯熟情况下#xff0c;根本不需要鼠标操作#xff0c;听起来是不是很酷的#… 经常处理文本以及经常需要写代码的人都会有自己比较常用的编辑器本人喜欢用Vim理由就是Vim编辑器灵活并且可以达到纯键盘操作使用纯熟情况下根本不需要鼠标操作听起来是不是很酷的不过别高兴太早想达到那个境界必须的指令是需要学习记忆练习的。总结指令如下 1、(motion) fx 向后 移动到搜索字母上x 可以是任意一个字母 tx 向后 移到搜索字母的左边 (这真的很有用) Fx 向前 移到搜索字母上 Tx 向前 移到搜索字母的左边 ; 重复上面四种命令 ,也是重复命令 不过方向取反 . 重复上一个操作 以上命令都是在本行移动 ,. 当前行 ,%当前文件 gd to definition of the current word w上一个词。b下一个词。(以nonword的特殊字符作为word的边界如.,-等 W 上一个词 B 下一个词 以空格作为word的边界又称长单词 e: 下个词的最后一个字母 ge 上个词的最后一个字母 0移动光标到当前行首。 gm 移动到行正中 $移动光标到行尾。 2$ 下一行行尾 ^移动光标到当前行的第一个字母位置。 ) ( 移动光标到上/下一个句子。 { } pre/next paragraph [{ ]} begin/end of block [[ ][ 代码块的开头和结尾 假设{和}位于第一列的情况下成立 [( ]) 括号范围内前后移动 gD 跳转到局部变量的定义处 gg到文件首 G到文件尾 numG移动光标到指定的行(num)。(比如 10G 就是到第 10 行) H移动光标到屏幕上面M移动光标到屏幕中间L移动光标到屏幕下面 当前屏幕的操作 nH 光标到当前屏幕的第n行 nL 光标到当前屏幕的倒数第n行 zt scroll to top zz scroll to middle 有用 把当前编辑行置于屏幕中间 zb scroll to bottom ctrB/b ctrF/f pre/next page ctrU/u ctrD/d pre/next half page ctre ctry 上/下滚一行 *读取光标处的单词并且移动光标到它再次出现的地方。 #读取光标处的单词并且移动光标到它上次出现的地方。 g* 它不完全匹配光标所在处的单词,而是匹配包含该单词的所有字符串 g# 它不完全匹配光标所在处的单词,而是匹配包含该单词的所有字符串 2.searching - 下一行的开始 上一行的开始非空 % matching parenthesis /text从当前光标处开始搜索字符串 text并且到达 text 出现的地方。必须使用回车来开始这个搜索命令。如果想重复上次的搜索的话按 n ?text和上面类似但是是反方向。 /\搜索完整的text单词 /ab\{3,5} 对b匹配3-5次 \{0,1}匹配0或1次 跟\一样 \{0,} 匹配0次或多次 跟\*一样 \{1,} 匹配1次或多次 跟\一样 \{3} 匹配3次 /ab\{-1,3} 将会匹配abbb中的ab 意思是尽可能的避免重复 /a.\{-}b 其中{-}匹配前面的项一次或0次 尽可能地少 一般这个模式本身只可能匹配到0次 因此 这个命令 只会匹配到axbxb中的axb /a.*b 则会尽可能多的匹配 因而对于axbxb 会匹配整个的axbxb /the\nword 匹配以the结束而且下一行以word开始的行 \_s 匹配空格或断行 /the\_sword the 与word 之间有空格或断行 /\d\u{3}\d\{3} 匹配一个数字 三个大写字母 单个数字 /joe/s-2 所查找之处往前两个字符 搜索完按n重复上次查找 N逆向上次查找 3n 向下搜索第三个 maa mark/jump to a a 转到标记所在的行头(行头) .到你上次编辑文件的修改点。这个命令很有用而且你不用自己去标记它 . 到上次修改的行 在上次编辑的地方与本次的地方来回跳转仅限使用命令的跳转 0 上次编辑的地方 ctrO ctrI 往前或往后跳 编辑的地方 3.replaceing :s/old/new 将当前行中old替换为new 只替换一次 :s/old/new/n search and replace n times :s/old/new/g 将当前行中的old替换为new全部替换 :.,$ s/old/new/g 将当前行至文件末尾中的old替换为new全部替换 :.,$ s/old/new 将当前行中至文件末尾中的old替换为new每行至替换一次 :1,$ s/old/new 或 :% s/old/new 将文件所有行中的old替换为new每行只替换一次 :1,$ s/old/new/g 或 :% s/old/new/g 将文件中的所有行的old替换为new全部替换 %是目前编辑的文章 #是前一次编辑的文章 :?^chapter?-1,/^chapter/2 sgreygrayg 将上个chapter与下一个chapter之间的所有的grey替换为gray用替换/ 来避免过多的/ :g/foobar/s/bar/baz/g 搜索foobar 然后替换为foorbaz 不会影响到jailbars :g/\(foo\)\(bar\)/s/\2/\1baz/g 特殊的序列 所有查找时匹配到的东西 \[1-9] 1到9号用\(\)括起来的东西 \u 下一个字符被变成大写 \U 以后 所有的字符都 变成大写 知道遇到\e \l 下一个字符变成小写 \L 以后的字符都变成小写 :.,.4 从当前行到下面第四行 :t,b 从上一个标记t到下一个标记b ~ 改变当前字母的大小写类型 ggguG : 将当前编辑文件内容全部转换成小写 g~m 切换大小写 动作m跨越的行 guw 变小写 gUw 变大写 xp 当前字母和后一个字母的位置进行替换 ddp 两行互换位置 4.inserting 输入一个长词的一部分按住 Ctrl再按 N或n)如果 VIM 会一直循环它找到的匹配的字符串。 i在当前字符的左边插入 a在当前字符的右边插入 I在当前行首第一个非空字符插入 A在当前行尾插入 gI 在行首插入 o在当前行下面插入一个新行O在当前行上面插入一个新行 R ENTER REPLACE MODE 替换 S 替换掉光标所在行 再进入编辑模式 5.formatting : 本行缩进 : 取消本行缩进 左移或右移当前段落一个移动宽度shiftwidth :n 缩进连本行在内的n行 :取消连本行在内的n行的缩进 c{motion}删除 motion 命令跨过的字符并且进入插入模式。比如c$这将会删除从光标位置到行尾的字符并且进入插入模式。ct!这会删除从光标位置到下一个叹号(但不包括)然后进入插入模式。被删除的字符被存在了剪贴板里面并且可以再粘贴出来。 d{motion}和上面差不多但是不进入插入模式。 3、有效的移动大段的文本 模式: v按字符选择。经常使用的模式所以亲自尝试一下它。 V按行选择。这在RGB(0x20,0x6a,0x4f)多行的文本的时候特别有用。 CTRv按块选择。采用xbeta的_Vimrc文件时 ctrq 按块选择。 4、在可视选择模式下剪切和拷贝 一旦你高亮了选区你或许想进行一些操作 d剪贴选择的内容到剪贴板。 y拷贝选择的内容到剪贴板。 c剪贴选择的内容到剪贴板并且进入插入模式。 在非可视选择模式下剪切和拷贝 如果你很清楚的知道你想拷贝或者剪切什么那你根本就不需要进入可视选择模式。这样也会节省时间 d{motion}剪切 motion 命令跨过的字符到剪贴板。比如dw 会剪切一个词而 dfS 会将从当前光标到下一个S 之间的字符剪切至剪贴板。 y{motion}和上面类似不过是拷贝。 y2fa 表示拷贝从当前光标到光标后面的第二个a 字符之间的内容。 :12y 表示拷贝第12 行到光标所在行之间的内容。 :24y 表示拷贝光标所在行到第24 行之间的内容。 c{motion}和 d{motion} 类似不过最后进入插入模式。 cw 改变一个词 cc change line d$ 删除从现在光标所在位置 (包括)至行尾 cw change word cw 与 dw 由区别 前者不去最后的一个空格 后者去 rc 将光标下的字符替换为c R replace beginning at cursor dd剪切当前行。 yw 复制的内容包括word之后的空白字符 ndd delete n lines ndw delete n words dw delete a word yy拷贝当前行。 Y 拷贝当前行。 Vyp 复制一行 cc 剪切当前行并且进入插入模式。 D 代表 d$ 删除到行尾的内容 C 代表 d$ 修改到到行尾的内容。 x 代表dl 删除当前光标下的字符 X 代表dh 删除当前光标左边的字符 daw 删除一个单词 (包括其后的空格 cis 删除一个句子 cas 删除一个句子 (包括后面的空白 diw 删除光标上的单词 daw 删除光标上的单词 (包括空白字符 用d或x删除时 同时被删除的内容被保存起来 s 代表cl 修改当前光标下的字符 S 代表cc 修改当行 J jion two lines r 替换之后 不进入插入模式 gum gUm 小写/大写 动作m跨越的文本 m 左移/右移 动作m跨越的行 n n 将n行左移或右移一个缩进位 5、粘贴 p 粘贴到光标后 大写P 粘贴到光标前 6、使用多重剪贴板 很多编辑器都只提供了一个剪贴板。VIM 有很多。剪贴板在 VIM 里面被称为寄存器(Registers)。你可以列出当前定义的所有寄存器名和它们的内容命令为“:reg”。最好使用小写字母来作为寄存器的名称因为大写的有些被 VIM 占用了。 使用寄存器的命令为双引号 “。 比如我们要拷贝当前行到寄存器 k。你应该按 “kyy。(你也可以使用 V”ky。为什么这样也可以呢?)现在当前行应该已经存在了寄存器 k 里面直到你又拷贝了一些东西进入寄存器 k。现在你可以使用命令 “kp 来粘贴寄存器 k 里面的内容到你想要的位置。 7、避免重复 . (小数点符号) 需要在normal下去执行 将会重复上一个修改命令。 u 撤销上次操作 U 撤销一行的操作 不管几次 ctrR 恢复撤销 CTRY 重做 8、使用数字 3j 将会把光标向下移动三行。 10dd 将会删除十行。 y3″ 将会拷贝从当前光标到第三个出现的引号之间的内容到剪贴板。 :w save(:wq save and quit) ZZ保存后退出 :q quit(:q! quit anyway) :only 关闭除当前窗口外的其它窗口 :qall 关闭所有的窗口 如果有为保存的文件 则自动跳到为保存的文件 :wall 全部保存 :e x edit file x :e x 放弃修改重新载入当前的文件x :n new window :h vim help :xx jump to line #xx ctrN CTRP auto-complete next/prev keyword 插入模式下的单词自动完成 ctrxl 自动补全整行内容 ctrxf auto-complete file name 搜索可匹配的文件名并完成 缩写 :abbr sprt system.out.println 在编辑状态下输入sprt后再输入其他非字母符号会自动扩展 ctrW 在多个窗口间切换 :set nu 或 :set number 显示行号 :set nonu 或 :set nonumber 消除行号 :set ruler 设置vim在右下角显示光标的位置 :set incsearch 自动匹配 :set hlsearch 搜索时自动匹配 :set nohlsearch :set ignorecase 忽略大小写 :set wrapscan 设置循环搜索 :set textwidth30 设置自动换行 并将 最大长度设为30 :set backgrounddark :set backgroundlight :set patchmode.org 编辑data.txt 时 保存原始文件为data.txt.org :reg 查看剪切板中的内容 gf 打开光标处的文件名 pwd 获取当前工作目录 多窗口: :vsp :sp vertically/horizontally split 纵向或横向分屏 :ctrlw-w 切换窗口 :close 关闭窗口 可以阻止关闭最后一个VIM窗口 :only 关闭除了当前窗口之外的所有的窗口 ctrlw 增加当前窗口的高度 :diffs split and diff 分屏比较 ctrW p to last accessed window 移动到上个屏幕 ctrW w to next window :12 go to 12th line :r file append file into vim/vi :f file change current filename to file :w save changes and stay in file :q quit and ignore changes :q! force quit and ignore changes :wq quit and save :nw file write file to the nth lines :e filename edit new file :r filename insert the new file to the position of the current cursor :0r filename 将文件filename的内容插入到文件的开头 :.,$w filename 将当前正在编辑的文件中的当前行至最后一行写到新的文件filename中 :.,$w filename 将当前正在编辑的文件中的当前行至最后一行写到追加到已有的文件filename中 z redraw the screen zz put the cursor to middle zt 光标到所在行到屏幕顶端 zb 光标所在行到屏幕下端 qm 录制宏到寄存器m m 执行寄存器中的宏 一些设置 :set go 隐藏菜单 :set shiftwidth4 一次移动4个单位 用于/span和命令 移动的宽度 5 光标后5行向右移动一个tab :12,24 将12至24行的数据都向右移动一个tab :12,24 将12至24行的数据都向右移动两个tab