vim编辑器

vim文本编辑器(工具)

vim模式

  • 编辑模式(命令模式,默认进入编辑),例如粘贴,删除
  • 输入模式(i,a,o)
  • 末行模式(在编辑模式按:进入)

打开单个文件(如果没有就新建),默认是处在编辑模式中

  • vim FILENAME
  • vim /path/to/somefile
  • vim +# 文件 (打开文件处在#行)
  • vim + 文件(打开文件处在最后一行)
  • vim +/PATTERN :打开文件,定位至第一次被PATTERN匹配到的地方行首

 

移动光标:h l j k

#h  移动#个字符

以单词为单位移动:w移至下一个单词的词首,

e跳至当前或下一个单词的词尾

b跳至当前或前一个单词的词首

#w 移至#单词的词首

行内跳转

0:绝对行首

^: 行首的第一个非空白字符

$:绝对行尾

 

行间跳转

#G:跳转至第#行

G:最后一行

 

末行模式下,直接给出行号即可

 

翻屏:

ctrl+f 向下翻一屏

ctrl+b 向上翻一屏

 

ctrl+d 向下翻半屏

ctrl+u 向上翻半屏

 

删除单个字符

x:删除光标所在处的单个字符

#x:删除光标所在处及向后的共#个字符

 

删除命令:d

d命令跟跳转命令组合使用

#dw(删除#个单词),#de,#db

 

dd:删除当前光标所在行

#dd:删除包括当前光标所在行内的#行

 

末行模式下:

StartADD,EndADDd

.:表示当前行

$:表示最后一行

+#:向下的#行

 :.,+3y表示当前行及向下3行进行复制

 

粘贴命令P

P:如果删除或复制为事整行内容,则粘贴至光标据的下方,如果复制或删除的内容为非整行,则粘贴至光标所在字符的后面

p:如果删除或复制为整行内容,则粘贴至光标所在行的上方,如果复制或删除的内容为非整行,则粘贴至光标所在字符的前面

 

复制命令y,用法同d命令

 

修改:先删除内容,再转换为输入模式

c:用法同d命令

 

替换:r

R:进入替换械,esc退出替换模式

 

撤消前一次的编辑操作 u

u:撤消前一次的编辑操作

连续u命令可撤消此前的n次操作(n不会大于50,因为内存只保留了前50次的操作)

#u:直接撤消前#次操作

 

重复前一次编辑操作

.

 

可视化模式

v:按字符选取

V:按矩形选取

 

查找

/PATTERN 向后查找

?PATTERN 向前查找

n

N

 

查找并替换

在末行模式下使用s命令

 

使用vim编辑多个文件

vim FILE1 FILE2 FILE3

:next 切换至下一个文件

:prev 切换至上一个文件

:last 切换至最后一个文件

:first 切换至第一个文件

:qa 退出全部文件

 

分屏显示

ctrl+w, s:水平拆分窗口

ctrl+w, v:垂直拆分窗口

 

在窗口间切换

ctrl+w, ARROW

:qa 关闭所有窗口

 

分窗口编辑多个文件

vim -o :水平分割显示

vim -O :垂直分割显示

 

将当前文件中部分内容另存为另外一个文件,末行模式下使用命令w

:w

:ADDR1,ADDR2w /path/to/somewhere

 

将另外一个文件的内容填充在当前文件中

:r /path/to/somefile

 

跟shell交互

:! COMMAND

 

替换

  • :s/old/new - 用new替换当前行第一个old。
  • :s/old/new/g - 用new替换当前行所有的old。
  • :n1,n2s/old/new/g - 用new替换文件n1行到n2行所有的old。
  • :%s/old/new/g - 用new替换文件中所有的old。
  • :%s/^/xxx/g - 在每一行的行首插入xxx,^表示行首。
  • :%s/表示行尾。
  • 所有替换命令末尾加上c,每个替换都将需要用户确认。 如:%s/old/new/gc,加上i则忽略大小写(ignore)。

还有一种比替换更灵活的方式,它是匹配到某个模式后执行某种命令,

  • 语法为 :[range]g/pattern/command
  • 例如 :%g/^ xyz/normal dd。
  • 表示对于以一个空格和xyz开头的行执行normal模式下的dd命令。
    关于range的规定为:
  • 如果不指定range,则表示当前行。
    m,n: 从m行到n行。
  • 0: 最开始一行(可能是这样)。
  • $: 最后一行
  • .: 当前行
  • %: 所有行

查找正则表达式

  • \d: 表示十进制数
  • \s: 表示空格
  • \S: 非空字符
  • \a: 英文字母
  • \|: 表示 或
  • \.: 表示.
  • {m,n}: 表示m到n个字符。这要和 \s与\a等连用,如 \a\{m,n} 表示m 到n个英文字母。
  • {m,}: 表示m到无限多个字符。
  • **: 当前目录下的所有子目录。
  • :help pattern得到更多帮助。

#从3行到6行,第2个字符后面添加空格

 

一些按键

  • gd: 跳转到局部变量的定义处;
  • gD: 跳转到全局变量的定义处,从当前文件开头开始搜索;
  • g;: 上一个修改过的地方;
  • g,: 下一个修改过的地方;
  • [[: 跳转到上一个函数块开始,需要有单独一行的{。
  • ]]: 跳转到下一个函数块开始,需要有单独一行的{。
  • []: 跳转到上一个函数块结束,需要有单独一行的}。
  • ][: 跳转到下一个函数块结束,需要有单独一行的}。
  • [{: 跳转到当前块开始处;
  • ]}: 跳转到当前块结束处;
  • [/: 跳转到当前注释块开始处;
  • ]/: 跳转到当前注释块结束处;
  • %: 不仅能移动到匹配的(),{}或[]上,而且能在#if,#else, #endif之间跳跃。
发布了38 篇原创文章 · 获赞 14 · 访问量 6403
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章