简单的VIM笔记

vim

1. 使用vim

在终端输入

vim

打开vim编辑器
vim

退出vim(先esc键)

:q

暂时退出vim

control + z  暂时退出vim
fg  回到vim

2. 在vim里打字

按键功能
i插入
o向下插入一行
a在光标后插入字符
esc 或 control + [退出插入模式
:w 或 :w name.c保存 或 保存+空格+文件名(存文件)
:wq 或 :wq name.c保存并退出 或 保存并退出+空格+文件名(存文件)
:qa退出所有vim窗口(同时开启多个档案的前提下)
:qa!强制退出所有vim窗口

3. 在vim里移动光标

按键功能
h⬅️
j⬇️
k⬆️️
l➡️
w(Word) 向后一个单词(不跳过标点)
W(Word) 向后一个单词(跳过标点)
b(Backward) 向前一个单词(不跳过标点)
B(Backward) 向前一个单词(跳过标点)
}向下一个段落
{向上一个段落
G跳到文件最后一行
gg跳到文件第一行
0跳到当前行的行头
$跳到当前行的行尾
gj当前行过长被折叠时跳转下一行
gk当前行过长被折叠时跳转上一行

4. 在vim中search

按键功能
/ + 内容 (e.g. /and)查找内容and
:set hlsearch(High light) 高亮显示查找结果
:set nohlsearch取消高亮显示
n(Next) 跳转下一条结果
N跳转上一条结果
? + 内容 (e.g. ?is)查找内容is (此时N和n的功能是反过来的)
*查找游标所在单词
#查找游标所在单词 (此时N和n的功能是反过来的)
f + 内容 (e.g. fa)查找同一行下一条内容
F + 内容 (e.g. Fa)查找同一行上一条内容
zz将游标所在行转到终端中间
zt将游标所在行转到终端最上面
zb将游标所在行转到终端最下面

5. 在vim中选择 复制 粘贴

按键功能
v进入 visual 模式
V进入 visual 模式并选取一整行
y(Yank) 复制到默认暂存器
yy复制行
p在游标后粘贴
P在游标前粘贴
yy + 数字 + p (e.g. yy5p)复制行并粘贴5次
2yy一次复制2行
y + 组合键复制目标内容(组合键参考 3.在vim中移动光标的内容)
uundo
control + rredo
" + 字母 + y (e.g. "dy)将所选内容存入目标暂存器 (e.g. 将内容存入暂存器d中)
" + 字母 + p (e.g. "dp)将目标暂存器中的内容粘贴 (e.g. 将暂存器d中的内容粘贴)
:reg查看目前所有暂存器内容

6. 在vim中编辑文字

按键功能
i插入
I跳到行首并进入insert模式
o向下插入一行
O向上插入一行
a在光标后插入字符
A跳到行尾并进入insert模式
x删除
d删除所选内容
D删除游标后面一整行删除
dd删除行
数字 + dd (e.g. 2dd)删除两行
dG删除游标后全部内容
dgg删除游标前全部内容
c删除所选内容并进入insert模式
C删除游标后全部内容并进入insert模式
r + 内容replace 将游标处进行内容替换
>>将所在行进行内容缩进(tab)
选择内容 + >将所选内容进行缩进
数字 + >> (e.g. 3>>)缩进3行
:set shiftwidth=2设置默认缩进为2字符
选择内容 + =将所选内容进行缩进

7. 编辑多个档案

按键功能
:e FILENAME开启页
:tabe开启一个页
:tabe FILENAME开启目标页面
gt移动下一个页
gT移动上一个页
:new开启一个水平视窗
control + w + w转换当前编辑视窗
control + w + j向下转换当前编辑视窗
control + w + k向上转换当前编辑视窗
:vnew开启一个垂直视窗
control + w + l向右转换当前编辑视窗
control + w + h向左转换当前编辑视窗
vim -o a.cpp b.cpp同时开启a.cpp b.cpp两个文件(水平视窗)
vim -O a.cpp b.cpp同时开启a.cpp b.cpp两个文件(垂直视窗)
vim -p *同时开启文件夹下所有文件(页签方式)
vim a.cpp b.cpp c.cpp同时开启 a.cpp b.cpp c.cpp 三个文件(buffer 模式)
:tab ball 或 :tab ba将 buffer 中所有文件转换为 tab 模式
:ls查看开启了几个文档(会有1 2 3 4 这样的标志)
:b2 (b is buffer)开启上一条中第2个文档
Control + shift + 6 (control + ^)切换上一个 buffer
:b FILENAME开启目标文件 FILENAME 可以简写
:bnext 或 :bn开启下一个文件
:bprevious 或 :bp开启上一个文件
:blast 或 :bl开启最后一个文件
:bfirst 或 :bf开启第一个文件
:bdelete 或 :bd关闭当前文件

8. 更多选择方式

按键功能
VVisual Line 模式(选择一整行)
Control + vVisual Block 模式(使用 k 或 j 向上或下选择一个块)
I ( 大写 i )光标前插入(esc 后会将选择的内容 全部加上插入的内容,常用于注释)
viw选择光标所在的单词
vaw选择光标所在的单词(包括后面的空格)
vi"选择双引号里面的所有内容 (i is inner)
va"选择双引号及里面的所有内容 (a is around)
vit选择 tag(标签) 里面的内容
vat选择 tag(标签) 及里面的内容
v}选择一个段落 ( 大括号是段落的意思 )
diw删除光标所在的单词
同理,将上面的 v 更改为 d 就是删除 (d is delete)
更改为 c 就是更改 (c is change)

9. 文本属性

按键功能
名词
wword
ssentence
pparagraph
ttag
单引号
"双引号
(小括号
[中括号
{大括号
动词
yyank
ppaste
ddelete
cchange
范围
iinner
aa or around
量词
1 2 3 4 …numbers

常用语法:动词 + 范围 + 名词;量词 + 动词

10. 其他实用小技巧

按键功能
^光标移动到行头,不包含空格
数字 + G (e.g. 10G)光标移动到第10行
:set number or :set nu显示绝对行号
:set nonumber or :set nonu取消绝对行号
:set rnu显示相对行号
:set no rnu取消相对行号
Control + fpagedown
Control + bpageup
zf (前提 control + v 选择目标行,动词)折叠选中的内容
zd or l显示折叠的内容
zfip (动词 + 范围 + 名词)折叠inner范围内的段落
~将光标处的内容切换大小写
.重复上一步 (连续动作)
J将下一行移到光标所在行
Control + w (insert模式下)删除光标前一个单词
Control + u (insert模式下)删除光标前本行全部内容
:h + (内容)help文档
vimtutor(控制行下执行)vim教程

11. 设定档

:h vimrc # 查看设定档案的help

vim ~/.vimrc # 编辑vimrc文件

source ~/.vimrc # 更新配置文件

~/.vimrc 的内容(各位各取所需,不必一模一样)

set rnu					       " 显示相对行号
set clipboard=unnamed  " vimvim 外程序共用粘贴
set hlsearch           " 查找时高亮
set cursorline         " 游标所在行添加下划线
set noswapfile         " 取消 vim 自动保存 .swp 的功能
set softtabstop=4      " tab = 4 空格
set shiftwidth=4       " 使用 > 或 < 进行缩进时一次缩进4个空格
set expandtab          " 使用空格代替tab
set showtabline=2      " 总是显示tabe栏(vim最上面的标签栏)
set splitbelow         " 使用 :new 指令时,在当前视窗下方开辟水平视窗(默认为在上方开辟一个空白的水平视窗)
set splitright         " 使用 :vnew 指令时,在当前视窗右边开辟一个垂直视窗(默认为在左边开辟一个空白垂直视窗)
set ignorecase         " 不区分大小写
set incsearch          " 搜索时,同步搜索

syntax on              " 开启语法高亮
colorscheme default    " 设置颜色主题(这里是默认主题,其它主题请自行网上冲浪挑选)

filetype on            " 开启文件类型检测
filetype indent on     " 开启该文件类型的自动缩进
filetype plugin on     " 开启该文件类型的插件

这里的设定档可以参考 :h vimfiles 中的文件结构进行归类(这是vim建议的方式,使用这种文件结构不需要自己手动编写读取命令,vim会自动读取配置),也可以在 .vimrc 中使用 source $HOME/settings.vim 命令进行手动读取(这里的 ~/settings.vim 文件是由自己创建的,你可以按照自己的喜好创建)

附::h vimfiles 内容

				*'runtimepath'* *'rtp'* *vimfiles*
'runtimepath' 'rtp'	string	(default:
					Unix:  "$HOME/.vim,
						$VIM/vimfiles,
						$VIMRUNTIME,
						$VIM/vimfiles/after,
						$HOME/.vim/after"
					Amiga: "home:vimfiles,
						$VIM/vimfiles,
						$VIMRUNTIME,
						$VIM/vimfiles/after,
						home:vimfiles/after"
					MS-Windows: "$HOME/vimfiles,
						$VIM/vimfiles,
						$VIMRUNTIME,
						$VIM/vimfiles/after,
						$HOME/vimfiles/after"
					macOS: "$VIM:vimfiles,
						$VIMRUNTIME,
						$VIM:vimfiles:after"
					Haiku: "$BE_USER_SETTINGS/vim,
						$VIM/vimfiles,
						$VIMRUNTIME,
						$VIM/vimfiles/after,
						$BE_USER_SETTINGS/vim/after"
					VMS:   "sys$login:vimfiles,
						$VIM/vimfiles,
						$VIMRUNTIME,
						$VIM/vimfiles/after,
						sys$login:vimfiles/after")
			global
	This is a list of directories which will be searched for runtime
	files:
	  filetype.vim	filetypes by file name |new-filetype|
	  scripts.vim	filetypes by file contents |new-filetype-scripts|
	  autoload/	automatically loaded scripts |autoload-functions|
	  colors/	color scheme files |:colorscheme|
	  compiler/	compiler files |:compiler|
	  doc/		documentation |write-local-help|
	  ftplugin/	filetype plugins |write-filetype-plugin|
	  import/	files that are found by `:import`
	  indent/	indent scripts |indent-expression|
	  keymap/	key mapping files |mbyte-keymap|
	  lang/		menu translations |:menutrans|
	  menu.vim	GUI menus |menu.vim|
	  pack/		packages |:packadd|
	  plugin/	plugin scripts |write-plugin|
	  print/	files for printing |postscript-print-encoding|
	  spell/	spell checking files |spell|
	  syntax/	syntax files |mysyntaxfile|
	  tutor/	files for vimtutor |tutor|
" 剩余内容过多,请自行查看

12. vim插件

12.1 安装插件工具

推荐使用 vim-plug (https://github.com/junegunn/vim-plug)

下面是链接中的安装方法,建议在链接中查看效果更佳

Installation

Download plug.vim and put it in the "autoload" directory.

Vim

Unix

curl -fLo ~/.vim/autoload/plug.vim --create-dirs \
    https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
You can automate the process by putting the command in your Vim configuration file as suggested here.

Windows (PowerShell)

iwr -useb https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim |`
    ni $HOME/vimfiles/autoload/plug.vim -Force
Neovim

Unix, Linux

sh -c 'curl -fLo "${XDG_DATA_HOME:-$HOME/.local/share}"/nvim/site/autoload/plug.vim --create-dirs \
       https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim'
Linux (Flatpak)

curl -fLo ~/.var/app/io.neovim.nvim/data/nvim/site/autoload/plug.vim --create-dirs \
    https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
Windows (PowerShell)

iwr -useb https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim |`
    ni "$(@($env:XDG_DATA_HOME, $env:LOCALAPPDATA)[$null -eq $env:XDG_DATA_HOME])/nvim-data/site/autoload/plug.vim" -Force

我用的是Mac电脑配置vim,所以直接使用下面命令即可

curl -fLo ~/.vim/autoload/plug.vim --create-dirs \
    https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim

12.2 安装插件

安装链接中的教程,在 ~/.vimrc 中编写添加

call plug#begin()

" 下面是插入制定插件的示范:在单引号中添加你需要添加的插件的github地址
" 例如:https://github.com/junegunn/vim-easy-align 只需要写 junegunn/vim-easy-align 即可
Plug 'junegunn/vim-easy-align'
Plug 'junegunn/fzf', { 'dir': '~/.fzf', 'do': './install --all' }
Plug '~/my-prototype-plugin'

call plug#end()

上面只是指定你要安装哪些插件,还需要重新加载 .vimrc :source %并且执行 :PlugInstall 命令才能完成安装

12.3 git提交(可选)

这里建议将 ~/.vimrc 文件移动或 Symbolic Link 到 ~/.vim 中,便于以后对 .vim 文件夹进行git操作(不进行git操作就不需要这个操作)

mv ~/.vimrc .vim
cd ~/.vim
ln -s ./.vim/.vimrc .

" 在 ~ 目录下查看为下面的样子就算OK了
(base) ran@192 ~ % ls -al | grep vimrc
lrwxr-xr-x    1 ran   staff     22  8 30 15:49 .vimrc -> /Users/ran/.vim/.vimrc

对vim文件夹进行git

cd ~/.vim
git add .
git commit -m "init commit"
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值