Linux 命令之vim - nieyamei/php-interview GitHub Wiki
- 普通模式
- 插入模式
- 可视模式
- 命令行模式
- 进入vim,按下i或a进入插入模式 按ESC进入普通模式 在该模式下可以使用方向键
h向左 j向下 k向上 l向右 w下一个单词 b上一个单词
- 移动 进入插入模式
i I a A o O cw
- 保存文档 普通模式输入 :进入命令行模式输入w回车保存文档
- 命令行模式下退出vim 普通模式输入 :进入命令行模式输入wq回车保存编辑退出
:q! 强制退出不保存 :q 退出 :wq! 强制保存并退出 :w 文件路径 另存为 :wq保存退出
- 普通模式下退出 输入shift + zz 即可保存退出
- 删除文本
- 1普通模式删除
x delete删除游标所在字符 X 删除游标所在前一个字符 dd删除整行 dw 删除一个单词 不适用中文 d^ 删除到行首 dG 删除到文档结尾处 dlG删到文档首部 2dd 表示一次删除两行
- 重复执行上次命令
在普通模式下.(小数点)表示重复上一次的命令操作 普通模式下输入x,删除第一个字符,输入.(小数点)会再次删除一个字符,除此之外也可以重复dd的删除操作 2. 执行指定次数相同的命令
输入10x,删除10个连续字符 输入3dd,将会删除3行文本 在普通模式下,你还可以使用dw或者daw(delete a word)删除一个单词,所以你可以很容易的联想到dnw(n替换为相应数字)表示删除n个单词
普通模式下,下列命令可以让光标快速调转到指定位置,我们分别讨论快速实现行间跳转和行内跳转
- 行间跳转 nG 游标移动到第n行 (如果默认没有显示行号,请先进入命令模式,输入:set nu以显示行号) gg 鼠标移动到第一行 G 到最后一行
小技巧:你在完成依次跳转后,可以使用Ctrl+o快速回到上一次(跳转前)光标所在位置 2. 行内跳转 普通模式下使用下列命令在行内按照单词为单位进行跳转 w 到下一个单词的开头 e 到下一个单词的结尾 b 到前一个单词的开头 ge 到前一个单词的结尾0或^ 到行头 $ 到行尾 f<字母> 向后搜索字母并调到第一个匹配的位置(非常实用) F<字母> 向前搜索字母并调到第一个匹配的位置
普通模式中使用y复制 普通模式中,yy复制游标所在的整行(3yy表示复制3行) y^ 复制至行首,或y0。不含光标所在处字符 y$ 复制至行尾。含光所在处字符 yw 复制一个单词 y2w 复制两个单词 yG 复制至文本末 y1G 复制至文本开头 普通模式中使用p粘贴 普通模式中,p(小写)代表粘贴至光标后(下) 普通模式中,P(大写)代表粘贴至光标前(上) 剪切及粘贴
其实前面讲得dd删除命令就是剪切,你每次dd删除文档内容后,便可以使用p来粘贴,也这一点可以让我们实现一个很爽快的功能——交换上下行: ddp,就这么简单,即实现了快速交换光标所在行与它下面的行
替换和Undo都是普通模式下的操作 命令 说明 r+<待替换字母> 将游标所在字母替换为指定字母 R 连续替换,直到按下Esc cc 替换整行,即删除游标所在行,并进入插入模式 cw 替换一个单词,即删除一个单词,并进入插入模式 C(大写) 替换游标以后至行末 ~ 反转游标所在字母大小写 u{n} 撤销一次或n次操作 U(大写) 撤销当前行的所有修改 Ctrl+r redo,即撤销undo的操作
- 使用命令进行快速调整缩进操作
这一小节学习如何在vim中进行快速缩进,缩进操作均在普通模式下有效 打开文件进行编辑 普通模式下输入15G,跳转到15行 普通模式下输入>> 整行将向右缩进(使用,用于格式化代码超爽) 普通模式下输入<< 整行向左回退 普通模式下输入:进入命令行模式下对shiftwidth值进行设置可以控制缩进和回退的字符数 2. shiftwidth命令
shiftwidth命令是指上一节>>命令产生的缩进(可以简写成sw) 普通模式下输入:进入命令行模式下对shiftwidth值进行设置可以控制缩进和回退的字符数 获取目前的设定值 :set shiftwidth? 设置缩进为10个字符 :set shiftwidth=10 输入ESC回到普通模式,再次尝试>>看缩进量是否变化 3. 调整文本位置
命令行模式下输入:ce(center)命令使本行内容居中 :ce 命令行模式下输入:ri(right)命令使本行文本靠右 :ri 命令行模式下输入:le(left)命令使本行内容靠左 :le
普通模式下输入/然后键入需要查找的字符串 按回车后就会进行查找。 ?与/功能相同,只不过?是向上而/是向下查找。 进入查找之后,输入n和N可以继续查找 n表示继续查找,N反向查找
- 快速查找练习
使用vim打开文件进行编辑
$ vim protocols
普通模式下输入/icmp查找字符串icmp
普通模式下输入n查找下一个icmp
普通模式下输入?tcp向上查找字符串tcp
普通模式下输入N查找上一个出现的tcp
- 高级查找
普通模式下输入*寻找游标所在处的单词
普通模式下输入#同上,但 * 是向前(上)找,#则是向后(下)找
普通模式下输入g*同* ,但部分符合该单词即可
普通模式下输入g#同# ,但部分符合该单词即可
以上查找n,N 的继续查找命令依然可以用
- 使用vim编辑多个文件 编辑多个文件有两种形式,一种是在进入vim前使用的参数就是多个文件。另一种就是进入vim后再编辑其他的文件。 同时创建两个新文件并编辑 vim 1.txt 2.txt 默认进入1.txt文件的编辑界面 命令行模式下输入:n编辑2.txt文件,可以加!即:n!强制切换,之前一个文件的输入没有保存,仅仅切换到另一个文件 命令行模式下输入:N编辑1.txt文件,可以加!即:N!强制切换,之前文件内的输入没有保存,仅仅是切换到另一个文件
- 进入vim后打开新文件
命令行模式下输入:e 3.txt 打开新文件3.txt 命令行模式下输入:e# 回到前一个文件 命令行模式下输入:ls可以列出以前编辑过的文档 命令行模式下输入:b 2.txt(或者编号)可以直接进入文件2.txt编辑 命令行模式下输入:bd 2.txt(或者编号)可以删除以前编辑过的列表中的文件项目 命令行模式下输入:e! 4.txt,新打开文件4.txt,放弃正在编辑的文件 命令行模式下输入:f 显示正在编辑的文件名 命令行模式下输入:f new.txt,改变正在编辑的文件名字为new.txt
在普通模式下输入v(小写),进入字符选择模式,就可以移动光标,光标走过的地方就会选取。再次按下v会后就会取消选取 在普通模式下输入Shift+v(小写),进入行选择模式,按下V之后就会把整行选取,您可以上下移动光标选更多的行,同样,再按一次Shift+v就可以取消选取 在普通模式下输入d删除选取区域内容 在普通模式下输入y复制选取区域内容 2. 可视模式命令练习
拷贝练习文件到当前目录 $ cp /etc/protocols . 打开练习文件 $ vim protocols 在普通模式下9G跳转到第9行,输入Shift+v(小写V),进入可视模式进行行选择,选中5行,按下>>缩进,将5行整体缩进一个shiftwidth 在普通模式下输入 Ctrl+v(小写v),进入可视模式进行矩形区域选择,选中第一列字符然后x删除整列