vim的操作

打印如下文件的操作:i1q1yypq98@1

复制代码
1
2
3
.....
98
99
100

means the ESC key, and means "Ctrl + a"

这段 Vim 操作包含了一系列命令,下面是对每个部分的详细解释:

操作步骤分析

  1. i1:

    • i 进入插入模式(Insert Mode)。
    • 1 输入字符 1
    • 这一步的结果是在光标当前位置插入字符 1
  2. <ESC>:

    • 按下 ESC 键退出插入模式,返回到普通模式(Normal Mode)。
  3. q1:

    • q 开始录制宏。
    • 1 是宏的名称,表示将录制的命令存储在寄存器 1 中。
    • 这一步开始录制接下来的命令。
  4. yyp:

    • yy 复制当前行(yank),将其存储在默认寄存器中。
    • p 粘贴(put)刚刚复制的行到光标所在位置的下一行。
    • 这两条命令的组合效果是复制当前行并在其下方粘贴一份。
  5. <C-a>:

    • <C-a> 是按下 Ctrla 键的组合,通常用于在数字上加一。
    • 如果光标在一个数字上,这个命令会将该数字加一。
  6. q:

    • 再次按下 q,停止录制宏。
    • 这将结束对寄存器 1 的录制。
  7. 98@1:

    • 98 表示将要执行宏的次数。
    • @1 表示从寄存器 1 中执行录制的宏。
    • 这一步的效果是执行刚才录制的宏 98 次。

整体操作效果

  1. 在当前行插入 1
  2. 退出插入模式。
  3. 开始录制宏到寄存器 1
  4. 复制当前行并在其下方粘贴一份。
  5. 在粘贴的行中,将数字加一。
  6. 停止录制宏。
  7. 最后,执行这个宏 98 次。

最终结果

假设您在一个文本文件中,初始状态是:

复制代码
这是第一行

执行这段 Vim 操作后,您将得到:

复制代码
这是第一行
1
这是第一行
2
这是第一行
3
...
这是第一行
98

每次执行宏都会在当前行下方插入一行,并将数字加一,直到执行 98 次。

在 Vim 中,宏和寄存器是两个重要的概念,它们用于提高编辑效率和灵活性。以下是对这两个概念的详细解释:

  • 定义: 宏是在 Vim 中录制的一系列命令,可以重复执行。它允许用户将一组操作记录下来,并在需要时快速重放。
  • 录制宏 : 使用 q 命令开始录制宏,后面跟一个寄存器名称(如 q1 表示将宏存储在寄存器 1 中)。录制完成后,再次按 q 停止录制。
  • 执行宏 : 使用 @ 命令来执行宏,例如 @1 表示执行存储在寄存器 1 中的宏。可以通过指定次数来重复执行宏,例如 98@1 表示执行宏 98 次。

寄存器

  • 定义: 寄存器是 Vim 中用于存储文本、命令和宏的临时存储区。Vim 提供了多个寄存器,用户可以将文本或命令存储在这些寄存器中以便后续使用。
  • 类型 :
    • 默认寄存器: 用于存储最近一次的复制或剪切操作。
    • 命名寄存器 : 通过字母(如 az)来命名的寄存器,用户可以将文本或宏存储在这些寄存器中。
    • 数字寄存器 : Vim 也提供了数字寄存器(如 09),用于存储最近的操作。
    • 宏寄存器 : 用户可以使用 q 命令录制的宏会存储在指定的寄存器中(如 12 等)。

宏和寄存器的关系

  • 存储和执行: 当用户录制宏时,Vim 会将录制的命令存储在指定的寄存器中。用户可以通过执行该寄存器中的宏来重复这些命令。
  • 灵活性: 使用寄存器,用户可以存储多个宏和文本,灵活地在不同的上下文中使用它们。

示例

假设您录制了一个宏,将其存储在寄存器 1 中,宏的内容是复制当前行并在下方粘贴。您可以通过执行 @1 来重放这个宏,或者通过 5@1 来重复执行 5 次。

总结

  • : 是一组命令的录制,可以快速重放,适用于重复性操作。
  • 寄存器: 是存储文本、命令和宏的临时存储区,允许用户灵活地管理和使用这些数据。

通过理解宏和寄存器的概念,您可以更高效地使用 Vim 进行文本编辑和操作。

在 Vim 中,<C-v>24l4jd$p 是一系列组合命令,涉及到插入模式和普通模式的操作。我们可以逐步分析这段命令的含义:

逐步解析

  1. <C-v>:

    • 这是一个特殊的命令,表示按下 Ctrlv 键的组合。它用于进入"块选择模式"(Visual Block Mode),允许用户选择文本块。
  2. 24l:

    • l 是普通模式下的命令,表示光标向右移动一个字符。24l 表示光标向右移动 24 个字符。
  3. 4j:

    • j 是普通模式下的命令,表示光标向下移动一行。4j 表示光标向下移动 4 行。
  4. d:

    • d 是普通模式下的命令,表示删除选中的文本。结合之前的选择,这里是删除光标位置到当前行的文本。
  5. $:

    • $ 是普通模式下的命令,表示移动到当前行的末尾。
  6. p:

    • p 是普通模式下的命令,表示在光标后粘贴之前删除的文本。

整体操作

结合以上分析,<C-v>24l4jd$p 的整体操作步骤如下:

  1. 进入块选择模式 : 使用 <C-v> 进入块选择模式。
  2. 移动光标: 向右移动 24 个字符,光标现在位于目标位置。
  3. 向下移动: 向下移动 4 行,光标现在位于目标行。
  4. 删除: 删除从光标当前位置到当前行末尾的文本。
  5. 移动到行末: 移动光标到当前行的末尾。
  6. 粘贴: 在光标后粘贴之前删除的文本。

总结

这段命令的作用是从当前光标位置向右移动 24 个字符,然后向下移动 4 行,删除该位置到当前行末尾的文本,最后在当前行末尾粘贴之前删除的文本。这可以用于快速编辑文本,特别是在处理块选择和文本替换时。

启动高亮:

复制代码
cp /etc/vim/vimrc ~/.vimrc
cd ~
ls -a 
vim .vimrc

--- before modification
+++ after modification
@@ -21,3 +21,3 @@
 " If using a dark background within the editing area and syntax highlighting
 " turn on this option as well
-"set background=dark
+set background=dark
@@ -31,5 +31,5 @@
 " Uncomment the following to have Vim load indentation rules and plugins
 " according to the detected filetype.
-"filetype plugin indent on
+filetype plugin indent on
@@ -37,10 +37,10 @@
 " The following are commented out as they cause vim to behave a lot
 " differently from regular Vi. They are highly recommended though.
 "set showcmd            " Show (partial) command in status line.
-"set showmatch          " Show matching brackets.
-"set ignorecase         " Do case insensitive matching
-"set smartcase          " Do smart case matching
-"set incsearch          " Incremental search
+set showmatch          " Show matching brackets.
+set ignorecase         " Do case insensitive matching
+set smartcase          " Do smart case matching
+set incsearch          " Incremental search
 "set autowrite          " Automatically save before commands like :next and :make
-"set hidden             " Hide buffers when they are abandoned
+set hidden             " Hide buffers when they are abandoned
 "set mouse=a            " Enable mouse usage (all modes)
You can append the following content at the end of the .vimrc file to enable more features. Note that contents after a double quotation mark " are comments, and you do not need to include them. Of course, you can inspect every features to determine to enable or not.

setlocal noswapfile " 不要生成swap文件
set bufhidden=hide " 当buffer被丢弃的时候隐藏它
colorscheme evening " 设定配色方案
set number " 显示行号
set cursorline " 突出显示当前行
set ruler " 打开状态栏标尺
set shiftwidth=2 " 设定 << 和 >> 命令移动时的宽度为 2
set softtabstop=2 " 使得按退格键时可以一次删掉 2 个空格
set tabstop=2 " 设定 tab 长度为 2
set nobackup " 覆盖文件时不备份
set autochdir " 自动切换当前目录为当前文件所在的目录
set backupcopy=yes " 设置备份时的行为为覆盖
set hlsearch " 搜索时高亮显示被找到的文本
set noerrorbells " 关闭错误信息响铃
set novisualbell " 关闭使用可视响铃代替呼叫
set t_vb= " 置空错误铃声的终端代码
set matchtime=2 " 短暂跳转到匹配括号的时间
set magic " 设置魔术
set smartindent " 开启新行时使用智能自动缩进
set backspace=indent,eol,start " 不设定在插入状态无法用退格键和 Delete 键删除回车符
set cmdheight=1 " 设定命令行的行数为 1
set laststatus=2 " 显示状态栏 (默认值为 1, 无法显示状态栏)
set statusline=\ %<%F[%1*%M%*%n%R%H]%=\ %y\ %0(%{&fileformat}\ %{&encoding}\ Ln\ %l,\ Col\ %c/%L%) " 设置在状态行显示的信息
set foldenable " 开始折叠
set foldmethod=syntax " 设置语法折叠
set foldcolumn=0 " 设置折叠区域的宽度
setlocal foldlevel=1 " 设置折叠层数为 1
nnoremap <space> @=((foldclosed(line('.')) < 0) ? 'zc' : 'zo')<CR> " 用
相关推荐
Liudef062 小时前
deepseek v3-0324实现SVG 编辑器
开发语言·javascript·编辑器·deepseek
CodeCraft Studio2 小时前
Excel处理控件Spire.XLS系列教程:C# 合并、或取消合并 Excel 单元格
前端·c#·excel
云心雨禅5 小时前
Vim操作指令全解析
编辑器·vim·excel
go_bai5 小时前
Linux环境基础开发工具——(2)vim
linux·开发语言·经验分享·笔记·vim·学习方法
suanday_sunny6 小时前
VSCode运行,各类操作缓慢,如何清理
ide·vscode·编辑器
信计小白7 小时前
vscode报Module containing this breakpoint has not yet loaded
ide·vscode·编辑器
Kusunoki_D7 小时前
使用 VIM 编辑器对文件进行编辑
linux·编辑器·vim
向宇it7 小时前
【零基础入门unity游戏开发——2D篇】2D 游戏场景地形编辑器——TileMap的使用介绍
开发语言·游戏·unity·c#·编辑器·游戏引擎
安分小尧7 小时前
[特殊字符] 使用 Handsontable 构建一个支持 Excel 公式计算的动态表格
前端·javascript·react.js·typescript·excel
hello_simon11 小时前
在线小白工具,PPT转PDF支持多种热门工具,支持批量转换,操作简单,高效适合各种需求
pdf·html·powerpoint·excel·pdf转html·excel转pdf格式