【Geek】To be a Vimer

Posted by ShawnD on November 24, 2021

Vim 命令

打开目录树

1
2
3
4
#vim命令模式下
:Explore #当前窗口下打开
:Vexplore #竖直分割窗口打开
:Sexplore #水平分割窗口打开

复制粘贴

复制的命令是y,即yank(提起) ,常用的命令如下:

  • y 在使用v模式选定了某一块的时候,复制选定块到缓冲区用;
  • yy 复制整行(nyy或者yny ,复制n行,n为数字);
  • y^ 复制当前到行头的内容;
  • y$ 复制当前到行尾的内容;
  • yw 复制一个word (nyw或者ynw,复制n个word,n为数字);
  • yG 复制至档尾(nyG或者ynG,复制到第n行,例如1yG或者y1G,复制到档

剪切的命令是d,即delete,d与y命令基本类似,所以两个命令用法一样,包括含有数字的用法

  • d 剪切选定块到缓冲区;
  • dd 剪切整行
  • d^ 剪切至行首
  • d$ 剪切至行尾
  • dw 剪切一个word
  • dG 剪切至档尾

粘贴的命令式p,即put(放下)

  • p 小写p代表贴至游标后(下),因为游标是在具体字符的位置上,所以实际是在该字符的后面
  • P 大写P代表贴至游标前(上)

vim的跨文件复制粘贴

  • 用vim打开一个文件,例如:a.cpp
  • 在普通模式下,输入:”:sp”(不含引号)横向切分一个窗口,或者”:vsp”纵向切分一个窗口,敲入命令后,你将看到两个窗口打开的是同一个文件
  • 在普通模式下,输入:”:e b.cpp”,在其中一个窗口里打开另一个文件
  • 切换到含有源文件(a.cpp)的窗口,在普通模式下,把光标移到你需要复制内容的起始行,然后输入你想复制的行的数量(从光标所在行往下计算),在行数后面接着输入yy,这样就将内容复制到临时寄存器里 了(在 普通模式下ctrl+w,再按一下w,可以在两个窗口之间切换)
  • 切换到目标文件( b.cpp )窗口,把光标移到你接收复制内容的起始行,按一下p,就完成复制了。

跳转第一行和最后一行

底线命令模式

:0或:1跳到文件第一行

:$ 跳到文件最后一行

命令模式

gg跳到第一行

shift+g跳到文件最后一行

撤销和恢复

u 撤销上一步的操作

Ctrl+r 恢复上一步被撤销的操作

注释多行代码

  • 移动光标到要注释的起始行的行首
  • ctrl + q 进入可视块模式
  • 移动光标选中要注释的代码行,在这里我用的j键
  • Shift + i 进入插入模式,键入当前语言的注释符,我这里是双斜杠,需要注意的是这时只有首行输入了注释符号
  • 按Esc键后,你之前选中的代码行会全部加上了注释符

其实,这里并不局限于注释代码,这里的操作叫列插入更合适,也就是你可以在多行代码的同一列插入同样的任意字符。

设置自动保存

.vimrc 中写入

1
set autowriteall

设置自动换行

1
set textwidth=60

查找和替换

在normal模式下按下 / 即可进入查找模式,输入要查找的字符串并按下回车。 Vim会跳转到第一个匹配。按下n查找下一个,按下N查找上一个。

1
:/

:s(substitute)命令用来查找和替换字符串。语法如下:

1
:{作用范围}s/{目标}/{替换}/{替换标志}

Reference

  1. 边用边学Vim —— 多行注释
  2. vim的跨文件复制粘贴