Linux命令三-VIM文本编辑器(vi vim)
版权声明:本文为博主原创文章,未经博主允许不得转载!!
欢迎访问:https://blog.csdn.net/qq_21439395/article/details/81952776
交流QQ: 824203453
vi / vim是Unix / Linux上最常用的文本编辑器而且功能非常强大。
只有命令,没有菜单。
《大碗》编辑器版
周围的同事不是用VI就是Emacs,你要是用UltraEdit都不好意思跟人家打招呼...什么插件呀、语法高亮呀、拼写检查呀,能给它开的都给它开着,就是一个字:酷!你说这么牛X的一东西,怎么着学会也得小半年吧。半年!?入门都远着呢!能学会移动光标就不错了,你还别说耗不起,就这还是左右移动!!!
Vi 工作模式
命令模式(一般模式)
插入模式
编辑模式(底行模式,命令行模式)
vi filename 进入 命令模式 , 输入:wq保存并退出命令模式
命令模式下输入i a o / I A O 进入插入模式 ,esc键退出
命令模式下输入:进入编辑模式,回车回到命令模式
输入R 进入替换模式(REPLACE)
在vi里面怎么查命令呢:(eg:查找shutdown命令)
格式为:
:!which shutdown
------------------------------
vi 模式下高亮的增加与取出
增加高亮:
命令模式下,输入 shift+# ,当前光标所在字符显示高亮
去除高亮:
命令模式下输入:
: set nohlsearch 即可取消高亮
显示高亮的命令:
set hlsearch
-----------------------------------------------------------------
VI编辑文件时无权限保存的解决方法(用户具有sudo权限)
一般的解决方法是关闭文件重新以sudo权限打开编辑。
在当前文件中操作的办法:
1,输入命令:%! sudo tee % > /dev/null
2,按提示输入sudo权限密码
3,输入“L"(Load File)
4,输入:q命令退出
关于“%! sudo tee % > /dev/null”这条命令的说明如下:
% #VI/VIM编辑的文件内容
! #管道
sudo #以root权限操作
tee #将标准输入(即通过管道过来的当前编辑的文件内容)输出到标准输出,同时写入到指定的文件中(即VI/VIM当前编辑的文件)
% #VI/VIM编辑的文件
> /dev/null #将标准输出重定向到/dev/null(不输出显示)
---------------------------------------------------------------------
应用实例:
导入文件 : r文件名
在vi中执行命令 :!命令 eg: :r !date 当前文件中导入时间
导入命令 :r!命令 或者: r ! 命令 就是说r和!和命令之间可以连在一起,也可以分开写。但是不能使用ll这种命令,必须要使用ls -l 这种全写才行
vi里面怎么查命令??:!which cp
vi里面怎么导入命令的结果?:r !which cp :r! echo $JAVA_HOME
定义快捷键 注:尖角号不是按6出来的,而是按ctrl+v
:map 快捷键 触发命令
eg: :map ^P I#<ESC> 用大写的I进入行首,添加#再退回到命令模式 即创建了一个快速注释的快捷键 ctrl+p
:map ^E aa@163.com 快捷插入邮箱地址
:map ^B 0x 把行首的第一个字符去掉,即去掉注释 设置完之后ctrl+B生效
连续行注释:
:n1,n2s/^/#/g 在n1行到n2行 行首加#号,^号表示行首
:n1,n2s/^#//g 把n1行到n2行 行首的#号去掉
:n1,n2s/^/\/\//g 有转义字符,在n1行到n2行 行首加//
替换
:ab samlee samlee@163.com 输入samlee时,显示的是后面的邮箱
取消可以使用命令 :unab samlee 取消定义快捷键也使用这种方式。
注意:
这些修改都是在当前vi命令下有效,为了扩大有效果的范围
可以在用户宿主目录下的.vimrc文件里修改 /home/usernam/.vimrc /root/.vimrc
默认文件是空的,可以不写冒号。
eg: set nu 设置行号 保存后,用vi命令打开的所有文件都有行号
vi命令下,可使用 /"内容” 来进行查找
-------------------------------------------------------------------
插入命令
命令 | 作用 |
a | 在光标后附加文本 |
A | 在本行行末附加文本 |
i | 在光标前插入文本 |
I | 在本行开始插入文本 |
o | 在光标下插入新行 |
O | 在光标上插入新行 |
保存和退出命令
命令 | 作用 |
:w | 保存修改 |
:w new_filename | 另存为指定文件 |
:w >> a.txt | 内容追加到a.txt文件中 |
:wq | 保存修改并退出 |
shift+zz(ZZ) | 快捷键,保存修改并退出 |
:q! | 不保存修改退出 |
:wq! | 保存修改并退出(文件所有者 可忽略文件的只读属性) |
:e! | 恢复到最初状态 |
注意: !强制保存只有文件所有者和root用户才能成功操作。
定位命令
命令 | 作用 | 命令 | 作用 |
h 方向左键 | 左移一个字符 | M | 移至当前屏幕中间行 |
j 方向下键 | 下移一行 | L | 移至当前屏幕下端(当前屏幕最后一行) |
k 方向上键 | 上移一行 | :set nu | 设置行号 |
l 方向右键 | 右移一个字符 | :set nonu | 取消行号 |
$ | 移至行尾 | gg G | 到第一行 到最后一行 |
0 | 移至行首(是零 不是O) | nG | 到第n行 |
H | 移至屏幕上端(当前第一行) | :n | 到第n行 |
使用h j k i 这几个方向键时,默认都是步长为1的,但是如果前面加上数字,可以按指定步长移动。eg: 3k 上移3行。
在当前行移动命令:
fx | 往右移动到x 字符上 你可以输入;来重复前一个f命令. |
Fx | 往左移动到x 字符上 |
tx | 往右移动到x 字符前 |
Tx | 往左移动到x 字符后 |
; 分号 | 配合 f 和 t 使用,重复一次 |
, 逗号 | 配合 f 和 t 使用,反方向重复一次 |
w | 将光标向前移动一个词. |
b | 将光标向后移动一个词. |
^ | 将光标移动到当前行的第一个字符. (译注: 第一个字符可能不是行首, 比如行首有space, tab等不可见符号, 0会把光标停在这些符号之前, 而^会把光jk标停在这些符号之后的第一个可见字符.) |
) | 将光标移动到下一个句子. (写电子邮件或者文本文档的时候很有用.) |
( | 将光标移动到上一个句子. |
使用关键字自动完成(补全)
输入一个字串的前几个字母 然后按 <C-N> (按住Ctrl然后按N>)或者<C-P>.
如果vim没有选择你需要的字串,
继续按<C-N>或<C-P> (或者上下箭头键也可以)(貌似N是从前往后[从上到下]匹配,而P是从后往前匹配)
-- vim会遍历所有和你输入的前几个字母匹配的字串.
eg:
删除命令
命令 | 作用 |
x | 删除光标所在处字符 |
nx | 删除光标所在处后n个字符 |
dd | 删除光标所在行,ndd删除n行 |
dG | 删除光标所在行到末尾的内容 |
D | 删除从光标所在处到行尾 |
:n1,n2d | 删除指定范围的行(eg :1,3d 删除了123这三行) |
复制和剪切命令
命令 | 作用 |
yy、Y | 复制当前行 |
nyy、nY | 复制当前行以下n行 |
dd | 剪切当前行 |
ndd | 剪切当前行以下n行 |
p、P | 粘贴在当前光标所在行下 或行上 |
替换和取消命令
命令 | 作用 |
r | 取代光标所在处字符 |
R | 从光标所在处开始替换字 符,按Esc结束 |
u | undo,取消上一步操作 |
ctrl+r | redo,返回到undo之前 |
搜索和替换命令
命令 | 作用 |
/string | 向后搜索指定字符串 搜索时忽略大小写 :set ic |
?string | 向前搜索指定字符串 |
n | 搜索字符串的下一个出现位置,与搜索顺序相同 |
N | 搜索字符串的上一个出现位置,与搜索顺序相反 |
:%s/old/new/g | 全文替换指定字符串 |
:n1,n2s/old/new/g | 在一定范围内替换指定字符串 |
% 指全文,s 指开始,g 指全局替换
起始行,终止行s/要替换的字符串/替换的新的字符串/g c 询问确认
eg: :%s/ftp/yang/g 全局替换,把ftp替换为yang
eg: :41,44/yang/lee/c 从41行到44行,把yang替换为lee,询问是否替换
eg: :41,44/yang/lee/g 同上,不询问,直接替换
eg: :%s/\/root/\/ROOT/g 把/root替换为/ROOT
eg: :%s#/bin/bash#/bin/ksh/g 把/bin/bash全部替换为/bin/ksh
使用替换命令来添加删除注释
:% s/^/#/g 来在全部内容的行首添加 # 号注释
:1,10 s/^/#/g 在1~10 行首添加 # 号注释
多剪切板操作
可用0-9 或 a-z 表示剪切板序号
shift ' a y(多行用ny) 复制当前光标所在行到剪切板a中
shift ' a p 粘贴剪切板a中的内容
:reg 查看所有剪切板的内容
可视化模式:
V(shift+v) 可视行模式,选择多行操作
v 可视字符模式
ctrl+v 可视块模式(列模式),操作列
所有常用的光标移动键都可以在可视模式使用,
比如vw会进入字符选中模式并且选中光标之后的1个词.
Vjj将会进入行选中模式并且选中当前行及之后的两行.
I或者O进入插入模式。 小写的不行
常用快捷键
Shift+ zz | 保存退出,与“:wq”作用相同 |
v | 进入字符可视模式 |
V 或 Shift + v | 进入行可视模式 |
Ctrl + v | 进入块可视模式 |
版权声明:本文为博主原创文章,未经博主允许不得转载!!
欢迎访问:https://blog.csdn.net/qq_21439395/article/details/81952776
交流QQ: 824203453
更多推荐
所有评论(0)