1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186
| 默认为命令模式,则任何其他模式下按ESC返回到命令模式,连续两次ESC也可以返回到命令模式 编辑模式 底行模式
vim +100 /etc/file.txt vim -On file1 file2 vim -on file1 file2 ctrl+w+s ctrl+w+v ctrl+w+c
当命令行显示recording时,说明进入录像模式,该模式下vim会记录你所有的操作,直到按q退出
v:字符选择,会将光标经过的所有地方反白选择 V:行选择,会将光标经过的行反白选择 ctrl+v:区块选择,可以用长方形的方式选择,然后按I,进入编辑模式输入需要插入的字符串,ESC后可以看到效果。 y:将反白的部分复制下来 d:将反白的部分删掉 p:将刚刚复制的区块,在游标处黏贴
shift+>(或者 shifi+<) --可能需要按两下才有效果 ctrl+v,选择多行,然后shift+>(或者 shifi+<) ctrl+v,选择多行,然后按=,此时所有选中行与选择区域的上一行进行对齐缩进
:上下 --可以快速调取历史命令 :set nu --行号 :set nonu --取消行号 :n --跳转到n行 :set list --显示行尾符,通常用来判断行尾是否存在空格 :set all --查看所有配置 :w [filename] --另存为 :n1,n2 w [filename] --将n1到n2行的内容另存为 :! cmd --暂时离开vi,然后执行cmd,例如【:! ls /home】,即可在vi中查看/home :set cursorcolumn --显示垂直辅助线 :e! --恢复至打开时的状态 :set ff --查看当前文本模式类型,一般为dos,unix :set ff=dos --设置为dos模式 :set fileencoding --查看当前文本编码格式 :noh --取消高亮
:sp /path/file1.txt --filename可有可无,不带filename,则打开同一个文件的两个窗口,上下分屏 :vsp --左右分屏 ctrl+ww --使光标在不同窗口之间跳转
ctrl+f 向前滚动一页 ctrl+b 向后滚动一页 ctrl+u 向前滚动半页 ctrl+d 向后滚动半页
一个字符、一个句子、一个段落、一行、一屏、一页。 确定操作单位后,需要确定命令重复执行的次数。Vim光标移动命令的操作对象范围计算公式为: 操作范围 = 操作次数 x 操作单位 例如:5h命令表示左移5个字符,8w命令右移8个单词 上:k ick up 下:j ump down 左:h ang back 右:l eap forward 0 移动到光标所在行行首 $ 移动到光标所在行行尾 ^ 移动到当前行的第一个非空字符 1G=gg 移动到文件第一行 2G=2gg 移动到文件第二行 nG 移动到当前文件的第n行 :n 移动到当前文件的第n行 gg|:0 移动光标到当前文件的第一行的第一个字符 G|:$ 移动光标到当前文件的第后一行的第一个字符 w|W 移动到下一个单词的开头 b|B 移动到上一个单词的开头 e|E 移动到下一个单词的末尾
* 移动到和当前光标所在位置的单词相同的下一个单词的开头 '#' 移动到和当前光标所在位置的单词相同的上一个单词的开头 % 在匹配的括号上移动。 '}' 移动到当前段落的末尾 '{' 移动到当前段落的开头 H 移动到当前屏幕第一行第一个字符 M 移动到当前屏幕中间第一个字符 L 移动到当前屏幕最后第一个字符
I 将光标移动到行首并进入编辑模式 A 将光标移动到行末并插入-在当前行尾追加 i 当前光标处插入-左插入 a 当前光标后插入-右插入 o 在当前行下面插入新行 O 在当前行上面插入新行-在当前行首插入 s 删除光标所在字符并插入 S 删除整行并插入 C 删除光标所在位置后面的内容并进入编辑模式
dd 删除光标所在行 4dd 从当前行开始向下删除4行
dgg 删除当前行以及当前行前面的所有行 dG 删除当前行以及当前行后面的所有行
d $|D|shift+d 删除光标位置到行尾 d 0 删除光标所在行,光标位置到行首
^d 删除整行
x 向后删除,从光标位置开始 X 向前删除,从光标前一个位置开始
r 按r后输入需要替换的字符,替换当前光标所在位置的字符 R 进入替换模式,替换光标位置的字符
u 撤销最近一次操作,并恢复操作结果,可多次使用来恢复已进行的多步操作 U 撤销对当前行的所有操作 ctrl+r 重做上一个动作
yy 复制当前整行 4yy 从当前行向下复制4行
p 将已复制的数据在光标下一行黏贴 3p 将已复制的数据在光标下一行黏贴出3份 P 将已复制的数据在光标上一行黏贴
自上而下查找:/字符 查找过程中可使用n查看,N反向查看 自下而上查找:?字符 Shift + 8,即*键,直接对光标停留处的单词进行向下搜索; Shift + 3,即
:set hlsearch 搜索词高亮显示设置 :nohl 取消搜索词高亮显示,用快捷键搜索的高亮也用词命令取消
s 表示替代的意思 g 表示替换一行内所有匹配到的字符串,全局替换。如果不加g则只替换第一个匹配的字符串 '#'和'/' 都可以用来分隔,作用相同,并且这个分隔符是可以自定义的
:s :%s/word1/word2/g 使用word2替换该文件中的所有word1 :%s
:s/string//g 将文件中的所有匹配到的string都删除掉
:1s/string1/string2/g 将第一行中的所有string1替换为string2 :1,5s/word1/word2/g 从1到5行之间查找word1字符串,并将其更改为word2 :1,$s/word1/word2/g 从第一行到最后一行查找word1字符串,并将其更改为word2 :1,$s/word1/word2/gc 从第一行到最后一行查找word1字符串,并将其更改为word2,需要用户确认
shift+5 能够在{}的闭合处进行跳转。
:!cmd :!bash :r !cmd
|