vi命令行模式怎么用?
发布网友
发布时间:2022-04-22 11:15
我来回答
共1个回答
热心网友
时间:2023-09-26 19:49
本篇文章给大家带来的内容是关于,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。
1.vim的三种工作模式(vim是vi的增强版本)
命令模式
按ESC键后就会进入命令模式,命令模式下的常用操作有复制/黏贴/删除/撤销等....
编辑模式
在命令模式下输入插入命令i(insert)、附加命令a (append)、打开命令o(open)、
修改命令c(change)、取代命令r或替换命令s都可以进入文本输入模式
末行模式
在命令模式下按 : 即可进入末行模式
2.命令模式下的相关操作
2.1 保存退出:shift + zz //但是空文件不会保存
2.2 代码的格式对齐:gg=G
2.3 光标的移动:
上下左右按键
hjkl:左下上右
行首行尾:0 和 $(shift+4)
文件首尾:gg 和 G
到指定行:行号+G
从当前行往后跳n行:n+enter
向后跳转一个单词:w
到下一行行首:enter
2.4 删除
删除一个字符:x
删除一个单词:dw
如果此时光标在单词的中间则只会删除单词的一部分
删除前半行:d0
删除后半行:d$(shift+4) 或者 D(shift+d)
删除整行:dd
删除n行:ndd
删除整篇文章:先将光标移动到最后一行 然后dgg
2.5 撤销和反撤销
撤销:u
反撤销:ctrl + r
2.6 复制
复制一行:yy
复制n行:nyy
2.7 粘贴
粘贴到当前光标的下一行:p
粘贴到当前光标的上一行:P(shift+p)
2.8 替换
替换单个字符:r
替换n个字符:R //ESC键退出替换
2.9 查找:
方法一:先按/(逆时针查找) 然后输入要查找的内容,如果查找的内容在文本中有多处按n切换到下一处,N切换到上一处
方法二:先按?(顺时针查找) 然后输入要查找的内容,如果查找的内容在文本中有多处按n切换到下一处,N切换到上一处
方法三:将光标移动到你要查找的单词上,然后按#(shift+3) 即可查找,如果查找的内容在文本中有多处按n切换到下一处,N切换到上一处
2.10 查找函数的用法(如同vs下的 f12)
将光标移动到你要查找的函数名上,然后按:章节号+K(shift+k),q键退出,在按enter键回到代码中
3.可视模式下的操作:在命令模式下按 v 即可进入可视模式,再按一次退出可视模式
3.1 选中任意文本: 通过上下左右键或hjkl来选中文本
3.2 复制:y (一个y就够了,复制的就是3.1的结果)
3.3 删除和剪切:d(一个d就够了,删除的就是3.1的结果)
3.4 粘贴:这里的粘贴是在光标所在位置的前后不是光标所在行的上下
在光标位置之后粘贴:p
在光标位置之前粘贴:P(shift+p)
4.编辑模式:
a:光标后面插入
i:
o:打开新的一行
s:
5.末行模式:在命令模式下按::
5.1 保存退出:wq 或 x + enter
5.2 行跳转:n + enter
5.3 末行模式跳转到命令模式:两次ESC
5.4 替换:
替换光标所在行的第一个:s/old/new
替换光标所在行的所有:s/old/new/g
一个一个的替换,没替换一个就要询问一次:s/old/new/gc
替换指定多行的:n1,n2s/old/new/g
替换指定多行并询问:n1,n2s/old/new/gc
替换所有:%s/old/new/g
替换所有并询问:%s/old/new/gc
5.5 分屏:
水平分屏:sp
垂直分屏:vsp
分屏两个不同的文件:sp/vsp 文件名
屏幕切换:ctrl + ww
退出分屏:
q:退出当前
qall:退出多有
wq/wqall
5.5 末行模式下执行shell命令:!命令
6.vim同时打开多个文件
vim -o 文件1 文件2 文件3 //垂直分屏
vim -O 文件1 文件2 文件3 //水平分屏
7.vim配置文件
7.1 用户级别(优先级高)
~./vimrc //可能没有
7.2 系统级别(优先级低)
/etc/vimrc
7.3 vim配置
set nocompatible
set number
set autoindent
set smartindent
set showmatch
set ruler
set incsearch
set tabstop=4
set shiftwidth=4
set softtabstop=4
set cindent
set nobackup
set clipboard+=unnamed
#自动补全
inoremap ' ''<ESC>i
inoremap " ""<ESC>i
inoremap ( ()<ESC>i
inoremap [ []<ESC>i
inoremap { {<CR>}<ESC>O