vi/vim使用 新手上路

申明:本文档主要是针对新手的一个入门指引,老鸟可以bypass过去。

            文档中提到的每个命令都经过笔者自己亲自验证。

一. 模式转换命令

              vi/vim主要有3种工作模式,分别是命令模式(command mode),插入模式(insert mode), 可视模式(visual mode)。

              1. 命令模式(command mode)

                           命令模式主要做屏幕光标的移动;字符,字或行的删除,复制,黏贴;进入插入模式(insert mode)

                           或可视模式(visual mode)。在命令模式下,按【i】切换到插入模式,按【v】切换到可视模式。

               2. 插入模式(insert mode)

                           插入模式主要用于文字的编辑输入操作,按【Esc】键切换到命令模式。

               3. 可视模式(visual mode)

                           可视模式主要用于大批量文本的选择,以便进行删除,复制等操作。

二. 光标操作 (命令模式下)

              1. 每按一次键盘键“h / j / k / l”,光标分别左 / 下 / 上 / 右移动一个字符,与“<--, ↓, ↑, -->”对应一致。

              2. ”ctrl+y” 或“ctrl+e”可以实现光标不动,仅仅上下文浮动一行。

              3. ”ctrl+f“ 或 "ctrl+b" 上下文往前往后移动一页。

              4. “ctrl+u” 或“ctrl+d” 上下文往前往后移动半页。  这个功能在应用中非常实用。

              5. “G” 跳转到文件尾,"gg” 跳转到文件头,"#G" 跳转到第#行的行首位置,比如 "23G" 光标就跳转到23行的行首。

              6. ”:set nu“ 在上下文中显示行号

              7. ":#" 直接跳转到上下文的第#行,比如 ":120" 跳转到第120行。

              8. ":f" 或 "ctrl+g" 显示当前编辑的文件详细信息

三. 编辑命令(命令模式下)

               1. 如果在vi/vim编辑时不小心按了 "ctrl+s",可以按 "ctrl+q" 来恢复状态。

                   "ctrl+s" 表示停止向终端输出,"ctrl+q"表示恢复向终端输出。

               2. 复制:a. "yy" 复制当前行到剪切板

                               b. ":y#" 复制当前行以下的#行到剪切板,比如 ":y8" 复制8行

                               c. "yw" 将光标所在处到字尾的字符复制到缓冲区

               3. 删除:a. "dd" 删除当前行到缓冲区

                               b. ":d#" 删除当前行以下的#行到缓冲区,比如 ":d8"删除8行

                               c. "x" 删除当前的一个字符

               4. 黏贴:"p" 黏贴缓冲区内容到当前位置

               5. 按鼠标左键可以选择字符串,按鼠标右键把缓冲区的内容黏贴到当前位置,

                   此时,可以使用命令":set nocindent"和":set noautoindent"来取消缩进空格来对齐代码

               6. "sp/vsp path/filename" 在vi/vim中打开指定的文件进行同时编辑,文件编辑窗口切换使用 "ctrl+ww"命令组合

              

四. 查找替换命令(命令模式下)

               1. "/xxx" 或 "?xxx" 查找当前编辑文件中包含xxx字串的地方

               2. "g+d" 可以快速查找光标所在位置字符串在该编辑文件中出现的地方

               3. 操作完1或2后,按 "n" 向下查找下一个匹配字串,按 "N" 向上查找下一个匹配字串

               4. 用"/xxx" 或 "?xxx" 查找字符串时,可以加上 "\c" 来表示查找时忽略大小写。注意:"\c" 是全字匹配的。

                   也可以用 ":set ignorecase" 命令来忽略大小写,此时是部分匹配;用 ":set noignorecase" 命令来关闭此功能

               5. 替换:a. ":1, $ s/str1/str2/g" 命令表示用字串str2替换当前文件中出现的所有字串str1

                               b. ":., $ s/str1/str2/g" 命令表示用字串str2替换当前行到文件末尾中出现的所有字串str1

                               c. ":s/str1/str2/g" 命令表示用字串str2替换当前行中出现的所有字串str1

                               d. ":s/str1/str2" 命令表示用字串str2替换当前行中首次出现的字串str1

               6. 用户可以自己安装一个ctags插件,在linux $>下用ctags -R命令生成整个工作目录的索引,然后就可以在

                   vi/vim的编辑环境下用 "g+ctrl+]" 或 "ctrl+]" 命令来查询变量,函数和宏的定义,"ctrl+t" 退回到上一步。

五. 其它命令(命令模式下)

                      1. :reg    --- 显示所有寄存器的内容

                 2. 使用 "!" 可以在vi/vim编辑情况下强制使用linux的命令,比如 ":!pwd" 显示当前vi/vim的执行路径

                      3. 寄存器操作 
                 "?nyy:将当前行及其下n行的内容保存到寄存器?中,其中?为一个字母,n为一个数字 
                 "?nyw:将当前行及其下n个字保存到寄存器?中,其中?为一个字母,n为一个数字 
                 "?nyl:将当前行及其下n个字符保存到寄存器?中,其中?为一个字母,n为一个数字 
                 "?p:取出寄存器?中的内容并将其放到光标位置处。这里?可以是一个字母,也可以是一个数字 
                 ndd:将当前行及其下共n行文本删除,并将所删内容放到1号删除寄存器中。

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值