版权声明:本文为博主原创文章,未经博主允许不得转载!!

欢迎访问:https://blog.csdn.net/qq_21439395/article/details/81952776
<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
<https://blog.csdn.net/qq_21439395/article/details/81952776>

交流QQ: 824203453