Skip to content

vim基本操作

命令模式下的操作

用户按下esc键,就可以使Vim进入命令模式下;当使用Vim打开一个新文件开始也是进入命令模式下。

保存退出

  • ZZ:保存退出

代码格式化

  • gg=G:代码的格式化

光标移动

  • h:光标左移
  • j:光标下移
  • k:光标上移
  • l:光标右移
  • w:移动一个单词
  • gg:光标移动到文件开头
  • G:光标移动到文件末尾
  • 0:光标移到到行首
  • $:光标移到到行尾
  • nG:行跳转,例12G,跳到12行处

删除命令

  • x:删除光标后一个字符,相当于 Del
  • X:删除光标前一个字符,相当于 Backspace
  • dw:删除光标开始位置的字,包含光标所在字符
  • d0本行所有内容,不包含光标所在字符
  • D/d$本行所有内容,包含光标所在字符
  • dd(本质其实是剪切)
  • ndd/dnd:从光标当前行向下删除指定的行数,如15dd、d15d都是向下删除15行
  • v/ctrl+v:使用h、j、k、l移动选择内容,然后按d删除其中ctrl+v是列模式,v为非列模式

撤销和反撤销命令

  • u:一步一步撤销,相当于word文档的ctrl+z
  • ctrl+r:反撤销,相当于word文档的ctrl+y

复制粘贴

  • yy:复制当前行
  • nyy:复制n行, 如10yyy10y都是复制10行
  • p:在光标所在位置向下新开辟一行,粘贴
  • P:在光标所在位置向下新开辟一行,粘贴
  • 剪切操作:按dd或者ndd/dnd删除,将删除的行保存到剪贴板中,然后按p/P就可以粘贴了

可视模式

  • v/ctrl+v:使用hjkl 移动选择内容;使用d删除;使用y复制;使用p粘贴到光标的后面;使用P粘贴到光标的前面

替换操作

  • r:替换当前字符
  • R:替换当前行光标后的字符

查找命令

  • //xxxx,从光标所在的位置开始搜索,按n向下搜索,按N向上搜索
  • ??xxxx,从光标所在的位置开始搜索,按n向下搜索,按N向上搜索
  • #:将光标移动到待搜索的字符串上,按n向下搜索,按N向上搜索
  • shift+k:在待搜索的字符串上按shift+k或者K,可以查看相关的帮助文档

切换到文本输入模式

从命令模式切换到文本输入模式只需输入如下命令:

  • i:在光标前插入
  • a:在光标后插入
  • I:在光标所在行的行首插入
  • A:在光标所在行的行尾插入
  • o:在光标所在的行的下面新创建一行,行首插入
  • O:在光标所在的行的上面新创建一行,行首插入
  • s
  • S:删除光标所在当前行,从行首插入
  • 按列模式插入:先按ctrl+v进入列模式,按hjkl移动选定某列,按I或者shift+i向前插入,然后插入字符,最后按两次esc。

末行模式下的操作

从命令模式切换到末行模式,输入冒号(:)

保存退出

  • q:退出
  • q!:强制退出,不保存修改内容
  • w:保存修改内容,不退出
  • wq:保存并退出
  • x:相当于wq

替换操作

下面表格中old表示原字符串,new表示新字符串

  • :s/old/new/:光标所在行的第一个old替换为new
  • :s/old/new/g:光标所在行的所有old替换为new
  • :m,ns/old/new/g:将第m行至第n行之间的old全部替换成new
  • :%s/old/new/g:当前文件的所有old替换为new
  • :1,\$s/old/new/g:当前文件的所有old替换为new
  • :%s/old/new/gc:同上,但是每次替换需要用户确认

快速翻屏

  • ctrl + u:向下翻半屏(up)--光标向上移动
  • ctrl + d:向上翻半屏(down)--光标向下移动
  • ctrl + f:向上翻一屏(front)
  • ctrl + b:向后翻一屏(back)

在末行模式下执行shell命令

!shell命令

按下两次esc可以回到命令模式

分屏操作

在打开文件之后分屏:

  • sp:当前文件水平分屏
  • vsp:当前文件垂直分屏
  • sp 文件名:当前文件和另一个文件水平分屏
  • vsp 文件名:当前文件和另一个文件垂直分屏
  • ctrl-w-w:在多个窗口切换光标
  • wall/wqall/xall/qall/qall!:保存/保存退出/保存退出/退出/强制退出分屏窗口

在打开文件之前分屏:

  • 分屏: vim -on file1 file2 …
  • 垂直分屏: vim -On file1 file2…

从末行模式切换回命令模式

vim的配置文件

用户级别配置文件

~/.vimrc,修改用户级别的配置文件只会影响当前用户,不会影响其他的用户.

例如: 在用户的家目录下的.vimrc文件中添加

set tabstop=4 ----设置缩进4个空格
set nu ----设置行号
set shiftwidth=4 ---设置gg=G缩进4个空格,默认是缩进8个空格

系统级别配置文件

/etc/vim/vimrc,修改了系统级别的配置文件将影响系统下的所有用户。

⭐️说明: 由于linux是多用户操作系统,,不要影响其他用户。

个人配置文件

" 该配置文件参照阮一峰的网络日志当中配置
" http://www.ruanyifeng.com/blog/2018/09/vimrc.html

set nocompatible
syntax on
set showmode
set showcmd
set mouse=a
set encoding=utf-8
set t_Co=256

set autoindent
set tabstop=4
set shiftwidth=4
set expandtab
set softtabstop=4

set number  " 显示行号
" set relativenumber
" 显示光标所在的当前行的行号,其他行都为相对于该行的相对行号
set cursorline
set textwidth=80
set wrap
set linebreak
set laststatus=2
set ruler

set showmatch
set hlsearch
set ignorecase
set smartcase

set nobackup
set noswapfile
set noundofile
set autoread
set listchars=tab:»■,trail:■
set list
set wildmenu
set wildmode=longest:list,full

安装vimplus

vimplus离线安装

vimplus离线安装方式(在网络不佳情形,推荐):

shell
sudo apt install vim-youcompleteme # 使用包管理器安装ycm
rm -rf ~/.vim ~/.vimplus # 删除本地之前已下载内容

vim.tar.gz 解压到自己家目录 ,将 vimplus.tar.gz 解压到自己家目录

然后再次进去.vimplus执行 ./install.sh即可

然后新建软连接

shell
ln -s ~/.vimplus/.vimrc  ~/.vimrc

安装报错解决

引用自 https://blog.csdn.net/sinat_16489689/article/details/109412955

错误描述
g:NERDTreeIndicatorMapCustom' is deprecated

shell
[nerdtree-git-status] option ‘g:NERDTreeIndicatorMapCustom’ is deprecated, please use ‘g:NERDTreeGitStatusIndicatorMapCustom’ Press ENTER or type command to continue
  • 解决办法引用自@chxuan
  • 问题产生原因本插件的原作者@Xuyuanp在更新版本后改变了变量的名字

问题定位
执行: sudo vim ~/.vimrc 在文件中找到如下代码(行号为我的文件中的行号)

shell
308 let g:NERDTreeIndicatorMapCustom = {
309     \ "Modified"  : "✹",
310     \ "Staged"    : "✚",
311     \ "Untracked" : "✭",
312     \ "Renamed"   : "➜",
313     \ "Unmerged"  : "═",
314     \ "Deleted"   : "✖",
315     \ "Dirty"     : "✗",
316     \ "Clean"     : "✔︎",
317     \ 'Ignored'   : '☒',
318     \ "Unknown"   : "?"
319     \ }

修改line 308 g:NERDTreeIndicatorMapCustomg:NERDTreeGitStatusIndicatorMapCustom

shell
307 " nerdtree-git-plugin
308 let g:NERDTreeGitStatusIndicatorMapCustom = {
309     \ "Modified"  : "✹",
310     \ "Staged"    : "✚",
311     \ "Untracked" : "✭",
312     \ "Renamed"   : "➜",
313     \ "Unmerged"  : "═",
314     \ "Deleted"   : "✖",
315     \ "Dirty"     : "✗",
316     \ "Clean"     : "✔︎",
317     \ 'Ignored'   : '☒',
318     \ "Unknown"   : "?"
319     \ }

问题解决!

cd wbash: cannot create temp file for here-document: Permission denied

vimplus在线安装

vimplus在线安装方式(国内网络环境下失败率太高,不推荐):

shell
sudo apt install git
git clone https://github.com/chxuan/vimplus.git ~/.vimplus
cd ~/.vimplus
./install.sh

速度慢,可以把git换为

shell
git clone https://gitee.com/cskaoyan123/vimplus.git ~/.vimplus

函数自动跳转

参考 https://blog.csdn.net/ballack_linux/article/details/71036072

wd54期中vim的课件 点击查看