vim 使用介绍
2021-02-28 本文已影响0人
命运总是颠沛流离
vimrc
syntax enable
syntax on
filetype on
set nu
set expandtab
set autoindent
set tabstop=2
set incsearch
set cursorline
set background=dark
colorscheme molokai
highlight StatusLine cterm=none ctermfg=white ctermbg=red
set laststatus=2
set statusline=[%F]%y%r%m%*%=[Line:%l/%L,Column:%c][%p%%] "显示文件名:总行数,总的字符数"
设置
- 设置行号
:set nu
- 取消行号
:set nonu
- 设置搜索高亮
:set hlsearch
- 取消搜索高亮
:set nohlsearch
- 取消本次搜索高亮:
:noh
查找
- 搜索
/
- 搜索下一个
n
- 搜索上一个
N
替换
- 替换当前行中的内容: :s/from/to/ (s 即 substitude)
- :s/from/to/ : 将当前行中的第一个from,替换成to。如果当前行含有多个from,则只会替换其中的第一个。
- :s/from/to/g : 将当前行中的所有from都替换成to。
- :s/from/to/gc : 将当前行中的所有from都替换成to,但是每一次替换之前都会询问请求用户确认此操作。
注意:这里的 from 和 to 都可以是任何字符串,其中 from 还可以是正则表达式。
- 替换某一行的内容: :33s/from/to/g
- :.s/from/to/g : 在当前行进行替换操作。
- :33s/from/to/g : 在第33行进行替换操作。
- :$s/from/to/g : 在最后一行进行替换操作。
- 替换某些行的内容: :10,20s/from/to/g
- :10,20s/from/to/g : 对第10行到第20行的内容进行替换。
- :1,$s/from/to/g : 对第一行到最后一行的内容进行替换(即全部文本)。
- :1,.s/from/to/g : 对第一行到当前行的内容进行替换。
- :.,$s/from/to/g : 对当前行到最后一行的内容进行替换。
- :'a,'bs/from/to/g : 对标记a和b之间的行(含a和b所在的行)进行替换。其中a和b是之前用m命令所做的标记。
- 替换所有行的内容
- :%s/from/to/g : 对所有行的内容进行替换。
复制剪切粘贴
-
yy
复制当前行 -
nyy
复制当前行以下 n 行 -
dd
剪切当前行 -
ndd
剪切当前行以下 n 行 -
p、P
粘贴在当前光标所在行下或行上
删除
- 删除当前字符
x
- 删除光标所在处后 n 个字符
nx
- 删除光标所在处到行尾内容
D
- 删除光标所在行到文件末尾内容
dG
- 删除指定范围的行
:n1,n2d
插入
- i :在当前光标前插入
- I:在当前行的行首插入
- a:在当前光标后插入
- A:在当前行的行尾插入
- o:在当前行的下面另起一行插入
- O:在当前行的上面另起一行插入
- s:删除当前光标的字符并开始插入
- S:删除当前行的内容开始插入
取消
-
u
取消上一步操作
定位
-
$
移至行尾 -
0
移至行首 -
nG
到第 n 行 -
gg/G
到第一行/到最后一行
使用系统命令
- 1)
:!command
不退出 vim,并执行 shell 命令 command,将命令输出显示在 vim 的命令区域,不会改变当前编辑的文件的内容
例如
:!ls -l
特别的可以运行:!bash 来启动一个 bash shell 并执行命令,不需要退出 vim - 2)
:r !command
将 shell 命令 command 的结果插入到当前行的下一行
例如
:r !date
,读取系统时间并插入到当前行的下一行。 - 3):起始行号,结束行号
!command
将起始行号和结束行号指定的范围中的内容输入到 shell 命令 command 处理,并将处理结果替换起始行号和结束行号指定的范围中的内容
例如
:62,72 !sort
,将 62 行到 72 行的内容进行排序 - 4):起始行号,结束行号
w !command
将起始行号和结束行号所指定的范围的内容作为命令 command 的输入。不会改变当前编辑的文件的内容
例如
:62,72 w !sort
,将 62 行到 72 行的内容进行排序,但排序的结果并不会直接输出到当前编辑的文件中,而是显示在 vim 敲命令的区域