vim 100问
更新:HHH   时间:2023-1-7


1. 如何使用vim打开一个文件后,位于100行的行首

]#  vim +100 FILENAME


2. 如何使vim打开一个文件后,位于第一个if处

]#  vim +/if FILENAME


3.  vim有哪几种模式,分别有什么作用

答:有编辑模式、插入模式、末行模式、可视模式

编辑模式即正常模式,也是vim打开文件的默认模式,在这个模式下可以执行跳转、复制、删除、替换等操作。

插入模式下可以输入字符。像文档编辑器一样写文档

末行模式可以执行命令,比如高亮显示、执行外部命令等

可视模式下,可以按需选取行或字符,然后进行其他操作。


4. 模式音的切换

A. 正常模式 -->  插入模式:可以使用i、I、a、A、o、O转换到插入模式。

i:   在当前光标所在处插入字符。

I:   在当前光标所在行的行首插入字符

a:   在当前光标所在处后方插入字符。

A:    在当前光标所在行的行尾输入

o: 在当前光标所在行的下方打开一个新行

O:     在当前光标所在行的上方打开一个新行。


B.  输入模式-->编辑模式,   按ESC键


C.  编辑模式-->末行模式, 输入:


D.  末行模式到编辑模式, 按ESC键盘


5.  如何保存并退出vim

A. 在正常模式下,输入大写的ZZ

B.  在末行模式下,输入:wq

C. 在末行模式下,输入:x


6. 如何将vim编辑的文件进行另存

:w /PATH/TO/SOMEFILE


7. 如何不保存退出

A.  如果文件没有被修改,则:q不保存退出

B.:  如果修改了文件而不想保存,只退出,使用:q!强制退出不保存。


8. 如何使光标在字符间跳转

A.   右手的hjkl,在正常模式下分别表示左、下、上、右。

B.   使用#COMMAND,表示可以向某个方向移动#次,比如2l表示向右移动2个字符。


9.  如何实现单词间的跳转

A. w,表示移动到下一个单词的首部

B. e, 表示移动到当前或者后一个单词的尾部

C. b,表示移动到当前或前一个单词的首部

D.    #COMMAND,表示移动#个单词。

需要注意的是:在正常模式下按e,如果处于非单词尾部则移动到本单词词尾,如果本身是词尾则移动到下一个单词的词尾; b亦然。

E.   单词跳转前还可以在前面增加动作。比如d2w表示删除光标当前位置到下2个单词的词首。


10. 如何实现行首行尾的跳转

A. ^, 表示跳转到本行的第一个非空白字符

B. 0,表示跳转到本行的绝对行首

C. $,表示跳转到本行的行尾。


11.  行间跳转

A. G表示跳转到文件的最后一行

B. 1G或gg表示跳转到文件首行

C. #G表示跳转到第#行

D. #j表示向下跳转#行

E. #k表示向上跳转#行


12.  句间跳转和段间跳转

A. ),跳到下一句

B. (,跳到上一句

C. },跳到下一段

D. {,跳到上一段


13.  翻屏操作

A. Ctrl+f,向文件尾部翻一屏

B. Ctrl+b,向文件首部翻一屏

C. Ctrl+u,向文件首部翻半屏

D. Ctrl+d,向文件尾部翻半屏

E. Enter键,按行向后翻


14. 字符编辑(Nornal)

x,在正常模式下,表示删除光标所在处字符。

#x,表示从光标所在处开始,删除#个字符。

xp,交换光标所在处字符与其后面字符的位置。


15.  替换命令(Normal)

r: 替换光标所在处的字符。使用方法rCHAR,在当前光标位置输入r,再输入你想要替换成的字符可以将当前光标所在处字符替换成CHAR.

R:    进入替换模式,在正常模式下输入R后,会进入替换模式,替换光标所在处的字符,而后光标右移,可以一直替换。


16. 删除命令

d: d表示delete,可以结合光标跳转命令,实现范围的删除

d$: 删除当前光标所在处一直到行尾的字符

d^: 删除当前光标所在处(不含)一直到行首的字符

de: 删除当前光标所在处一直到本单词或者下一个单词的词尾

dw: 删除当前光标所在处一直到下个单词的词首(不含词首)

db: 删除当前光标所在处(不含当前光标)一直到本单词或上一个单词的词首

#d[b|e|w]: 表示删除命令可以搭配跳转及数字一起使用,达到删除多个单词的效果

dd: 删除整行

#dd: 删除多行


17. 粘贴命令(p,put,paste)

A. p: 如果剪贴板内容不是整行,则在当前光标的后面插入剪贴板内容; 如果是整行,则在当前光标所在行的下一行粘贴。

B. P:  如果剪贴板内容不是整行,则在当前光标的前面插入剪贴板内容;如果是整行,则在当前光标所在行的上一行粘贴。


18. 复制命令(y,yank)

y,复制,工作行为与d类似

y$: 复制当前光标所在位置一直到行尾的内容

y^: 复制当前光标所在位置(不含)一直到行首的非空白字符

y0: 复制当前光标所在位置(不含)一直到绝对行首

ye: 复制当前光标所在位置一直到词尾

yw: 复制当前光村所在位置一直到下一个词的词首(不含词首)

yb: 复制当前光标所在位置(不含)一直到本单词或者上一个单词的词首

#y[e|w|b]: y可以结合数字以及Motion来操作,表示一次可以复制多个单词

yy: 整行复制

#yy: 多行复制,从当前行算起,一起往下复制#行。


19. 改写命令(change,c):

编辑模式跳转到输入模式,实现删除操作。

c$: 删除当前光标所在处一直到行尾的字符,并进入Insert模式

c^: 删除当前光标(不含 )所在处一直到行首,并进入Insert模式

c0: 删除当前光标(不含 )所在处一直到绝对行首,并进入Insert模式

cb: 删除当前光标所在处(不含)一直到本单词或上一个单词的词首,并进入Insert模式

ce: 删除当前光标所在处一直到本单词或者下一个单词的词尾,并进入Insert模式

cw: 删除当前光标所在处一直到下个单词的词首(不含词首),并进入Insert模式

#COMMAND: 可以跟数字联动,表示可以改写多个单词或行

cc:删除光标所在的行,并转换为Insert模式;

#cc:


20.  撤消操作

A.  u,undo,撤消前一次操作

B.  U,撤消针对本行的所有操作

C. Ctrl+r,撤消此前的撤消操作,也就是redo,经测试不能redo大写U的撤消。

更多训练,请访问vimtutor,进行实操。


返回系统运维教程...