从 vi 发展出来的文本编辑器
-
vim 键盘图
-
vi/vim 共分为三种模式,
3.1 命令模式(Command mode):- 进入输入模式:
1) i 『从光标所在处输入』, I 『在所在行的第一个非空格符处开始输入』 (常用)
2)a 『从光标所在的下一个字符处开始输入』, A 『从光标所在行的最后一个字符处开始输入』(常用)
3)o 『在光标所在的下一行处输入新的一行』, O 为在目前光标所在处的上一行输入新的一行(常用)
4)进入取代模式(Replace mode),r 只会取代光标所在的那一个字符一次;R会一直取代光标所在的文字,直到按下 ESC 为止(常用) - x:删除当前光标所在处的字符
- : 切换到底线命令模式
3.2 输入模式(Insert mode)
3.3 底线命令模式(Last line mode)
移动光标
- h j k l:左下上右
- n<space>:例如 20<space> 则光标会向右移动 20 个字符距离
- 0 或功能键[Home]:一行的最前面字符处 (常用)
- $ 或功能键[End]:一行的最后面字符处(常用)
- G:移动到最后一行(常用)
- nG:移动到这个档案的第 n 行。
- gg:移动到这个档案的第一行,相当于 1G ! (常用)
- n<Enter>:光标向下移动 n 行(常用)
搜索替换:
- /word:向光标之下寻找一个名称为 word 的字符串,
- ?word 向光标之上寻找
- n:英文按键,代表重复之前的搜寻动作,向下则继续向下
- N:与 n 相反,向下变向上
- :1,40s/hi/Hello/g :在 1 到 40 行之间搜寻 hi 并取代为 Hello
- :1,$s/hi/Hello/g 或 :%s/hi/Hello/g,从第一行到最后一行寻找 word1 字符串,并将该字符串取代为 word2
- :1,$s/word1/word2/gc 或 :%s/word1/word2/gc,在取代前显示提示字符给用户确认 (confirm) (常用)
删除、复制、 粘贴
- x, X:x 为向后删除一个字符 ( [del] ), X 为向前([backspace] ) (常用)
- nx:『10x』
- dd:删除所在一整行(常用)
- ndd:n 行,例如 20dd (常用)
- d1G:删除光标所在到第一行的所有数据
- dG:删除光标所在到最后一行的所有数据
- yy:复制游标所在的那一行(常用)
- nyy:n 为数字。复制光标所在的向下 n 行,例如 20yy 复制 20 行(常用)
- u:复原前一个动作。(常用)
- [Ctrl]+r:重做上一个动作。(常用)
- . : 小数点,重复前一个动作的意思。
退出、离开 ESC
- :w [filename]:将编辑的数据储存成另一个文件(类似另存)
- :r [filename]:在编辑的数据中,读入另一个文件的数据。即将 『filename』 这个文件内容加到游标所在行后面
- :n1,n2 w [filename]:将 n1 到 n2 的内容储存成 filename 这个档案。
-:! command:暂时离开 vi 到指令行模式下执行 command 的显示结果!例如『:! ls /home』即可在 vi 当中察看 /home 底下以 ls 输出的档案信息!
环境的变更
- :set nu:显示行号,设定之后,会在每一行的前缀显示该行的行号
- :set nonu:与 set nu 相反,为取消行号!
- 进入输入模式:
1、复制粘贴
- 单行复制
在命令模式下,将光标移动到将要复制的行处,按“yy”进行复制; - 多行复制
在命令模式下,将光标移动到将要复制的首行处,按“nyy”复制n行;其中n为1、2、3…… - 粘贴
在命令模式下,将光标移动到将要粘贴的行处,按“p”进行粘贴