Vim编辑器学习
1.vim模式
正常模式(按Esc或Ctrl+[进入) 左下角显示文件名或为空
插入模式(按i进入) 左下角显示--INSERT--
可视模式(按v进入) 左下角显示--VISUAL--
2. 打开文件
# 打开单个文件
vim file
# 同时打开多个文件
vim file1 file2..
# 在vim窗口中打开一个新文件
:open [file]
【举个例子】
# 当前打开1.txt,做了一些编辑没保存
:open! 放弃这些修改,并重新打开未修改的文件
# 当前打开1.txt,做了一些编辑并保存
:open 2.txt 直接退出对1.txt的编辑,直接打开2.txt编辑,省了退出:wq再重新vim 2.txt的步骤
# 打开远程文件,比如ftp或者share folder
:e ftp://192.168.10.76/abc.txt
:e \qadrive\test\1.txt
# 以只读形式打开文件,但是仍然可以使用 :wq! 写入
vim -R file
# 强制性关闭修改功能,无法使用 :wq! 写入
vim -M file
3. 插入命令
i 在当前位置生前插入
I 在当前行首插入
a 在当前位置后插入
A 在当前行尾插入
o 在当前行之后插入一行
O 在当前行之前插入一行
4. 查找命令
最简单的查找
/text 查找text,按n健查找下一个,按N健查找前一个。
?text 查找text,反向查找,按n健查找下一个,按N健查找前一个。
vim中有一些特殊字符在查找时需要转义 .*[]^%/?~$
:set ignorecase 忽略大小写的查找
:set noignorecase 不忽略大小写的查找
快速查找,不需要手打字符即可查找
* 向后(下)寻找游标所在处的单词
# 向前(上)寻找游标所在处的单词
以上两种查找,n,N 的继续查找命令依然可以适用
**精准查找:**匹配单词查找
如果文本中有这三个单词
hello``helloworld``hellopython
那我使用 /hello ,这三个词都会匹配到。
有没有办法实现精准查找呢?你可以使用
/hello\>
**精准查找:**匹配行首、行末
# hello位于行首
/^hello
# world位于行末
/world$
5. 替换命令
~ 反转游标字母大小写
r<字母> 将当前字符替换为所写字母
R<字母><字母>... 连续替换字母
cc 替换整行(就是删除当前行,并在下一行插入)
cw 替换一个单词(就是删除一个单词,就进入插入模式),前提是游标处于单词第一个字母(可用b定位)
C (大写C)替换至行尾(和D有所区别,D是删除(剪切)至行尾,C是删除至行位并进入插入模式)
:s/old/new/ 用old替换new,替换当前行的第一个匹配
:s/old/new/g 用old替换new,替换当前行的所有匹配
:%s/old/new/ 用old替换new,替换所