Vim 常用操作

发布于 2024-12-03 08:04:15 字数 4952 浏览 25 评论 0

以 root 用户保存当前文件

:w !sudo tee %

字符编码

以指定字符编码打开文件:

:e ++enc=<encoding> [filename]

以指定字符编码保存文件:

:w ++enc=<encoding> [filename]

指定当前使用的字符编码:

:set encoding[=<encoding>]

指定用于保存文件的字符编码:

:set fileencoding[=<encoding>]

显示当前光标下字符的代码点( ga ):

:as

Hex(hexadecimal)是 Unicode 代码点值,即 Unicode number,在 vim 的插入模式中输入 Unicode 字符: ctrl-v[Unicode number] ,比如 ctrl-vu21b2,显示当前光标下字符在磁盘上的实际字节值: g8 ,例如 g67 即 ASCII 十六进制值( ctrl-vu0067 )。

识别当前文件中无效的 UTF-8 字符序列: 8g8

插件——fzf.vim

命令说明
:Files [PATH]在当前或指定目录中搜索文件名
:Buffers在缓冲区中搜索文件名
:History:搜索历史命令
:Rg在当前目录搜索文件内容
:Lines在缓冲区中搜索内容
:BLines在当前缓存区(即当前文件)中搜索内容
:Filetypes搜索文件类型

Shell

运行单行 Shell 命令:

:! pwd

运行多行 Shell 命令:

:shell

基础操作

导航:

  • ctrl-o :光标回退到之前的位置
  • ctrl-i :光标前进到之前修改的位置

折叠:

  • zf :为当前选择的内容创建折叠
  • zd :删除当前折叠
  • zE :删除所有折叠
  • zj :移动至下一个折叠
  • zk :移动至上一个折叠
  • zc :关闭当前打开的折叠
  • zo :打开当前的折叠
  • zO :打开当前的折叠及其嵌套的折叠
  • zm :关闭所有折叠
  • zM :关闭所有折叠及其嵌套的折叠
  • zr :打开所有折叠
  • zR :打开所有折叠及其嵌套的折叠
  • zn :禁用折叠
  • zN :启用折叠

屏幕:

  • shift-h :光标来到屏幕的最上方
  • shift-m :光标来到屏幕的正中间
  • shift-l :光标来到屏幕的最下方
  • zt :将当前行置于屏幕顶部
  • zz :将当前行置于屏幕中央

杂项:

  • shift-j :合并行

自定义快捷键

  • 使用 ctrl-[hjkl] 来调整窗口大小
  • 使用 ctrl-c 单词大小写切换(需要切换输入模式与普通模式)
    • Shift-` :在普通模式下对指定单字符切换大小写
  • 使用 tab 切换到下一个缓冲区文件
  • 使用 shift-tab 切换到上一个缓冲区文件
  • 使用 ctrl-s 保存
  • 使用 ctrl-q 退出
  • 使用 <leader>[hjkl] 窗口间导航
  • 使用 <leader>f 在当前目录及子目录中搜索文件内容
  • 使用 <leader>e 在当前文件中搜索文件内容
  • 使用 shift-e 在缓冲区中搜索文件内容
  • 使用 <leader>o 在当前目录及子目录搜索文件名
  • 使用 ctrl-e 在缓冲区中搜索文件名
  • 使用 <leader>c 搜索历史命令

Netrw

  • :Ve :打开目录树
  • gh :显示或隐藏隐藏的文件
  • I :显示或隐藏 banner
  • d :新建一个目录
  • R :重命名
  • %: 新建一个文件

寄存器

默认寄存器

  • yiw :复制整个单词到默认寄存器
  • p :从默认寄存器中读取文本并粘贴(普通模式)
  • ctr-r" :从默认寄存器中读取文本并粘贴(插入模式)

自定义寄存器

  • "ayiw :复制整个单词到寄存器 a
  • "ap :从寄存器 a 中读取并粘贴(普通模式)
  • ctr-ra :从寄存器 a 中读取并粘贴(插入模式)

录制并使用宏

录制宏

  • q[a-z] :开始记录一个宏到某个寄存器
  • q :停止录制宏

##使用宏

  • [num]@[a-z] :从指定寄存器中读取宏并执行 num 次
  • .: 重复使用宏

Vimdiff

打开文件对比窗口:

vimdiff first.txt second.txt
vim -d first.txt second.txt

导航:

  • ]c :跳转到下一个更改
  • [c :跳转到上一个更改

获得更改( do ,diff obtain):

:diffget

放置更改( dp ,diff put):

:diffput

刷新当前缓冲区的比对:

:diffupdate

Git 合并冲突

git mergetool :运行合并冲突解决工具( vimdiff )来解决合并冲突

  • LOCAL:来自当前分支的文件
  • BASE:共同的祖先,文件在两个更改之前的样子
  • REMOTE:要合并到当前本地分支的文件
  • MERGED:最终保存到版本库中的合并结果
:diffget REMOTE  " get from REMOTE
:diffget BASE    " get from BASE
:diffget LOCAL   " get from LOCAL

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

魔法少女

暂无简介

文章
评论
27 人气
更多

推荐作者

櫻之舞

文章 0 评论 0

弥枳

文章 0 评论 0

m2429

文章 0 评论 0

野却迷人

文章 0 评论 0

我怀念的。

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文