vim命令与技巧

1.常用vim操作

vim使用教程图文教程(全面,手册)

vim人类史上最好用的文本编辑器!(操作)

简明 Vim 练级攻略 | 酷 壳 - CoolShell

:w        :q        :wq        :q!

:set nu    (:set number)

显示行号

:set nonu    (:set nonumber)

取消显示行号

:w [文件名]

将编辑后的内容保存到另一个文件中(另存为,如果文件不存在则创建文件并存入)

:2,5w [文件名]

将第2到5行的内容保存到另一个文件中(指定行另存为)

:r [文件名]

输入另一个文件的内容,到光标的下一行

:1,$d

从第一行到最后一行,全部删除

:1,$y

从第一行到最后一行,全部复制(yanked)

:%s/old_string/new_string/g

某个字符串全部替换为另一个字符串

    1.old_string 是您要替换的原始字符串。

    2.new_string 是您要替换为的新字符串。

    3.g 表示全局替换,如果不包含 g,则只替换每行的第一个匹配字符串。

:727,857s/SQL/API/g

将727到857之间的SQL替换为API

:1,10s/\v(.*)/\U\1/g

1.        1,10:表示行范围,指定了我们要替换的行的范围为1到10行。
2.        s:表示进行替换操作。
3.        \v:启用“魔术模式”或者“非规范模式”,这意味着我们可以使用更简洁和直观的正则

           表达式语法来匹配文本。
4.        (.*):这是正则表达式的一部分,表示匹配任意字符(除了换行符)零次或多次,并

       将其捕获到分组1中。
5.        \U:将接下来的字符全部转换为大写。
6.        \1:引用第一个捕获的分组,即(.*)中匹配到的内容。
7.        g:表示全局替换,在每一行中找到所有匹配项并进行替换。

这个命令会在1到10行的每一行中找到任意字符,然后将其全部转换为大写。

:let i=130 | 858,888g/$/s/$/\=i/ | let i=i+1

1.        let i=130:这个命令使用let关键字来定义一个变量i并将其初始化为130,

           这个变量用于存储自增的数字。

2.        |: 这个竖线符号用于分隔多个命令,使它们可以在同一行上执行。

3.        858,888g/$/s/$/\=i/,这是一个替换命令,它的格式为:

                [range]g/pattern/s/pattern/replacement/

           其中:
                858,888g:这个范围命令指定了从858到888行。
                /$/:这个模式匹配每一行的行尾($表示行尾)。
                s/$/\=i/:这个替换命令将行尾的行尾符号替换为变量i的值,\=表示后面的内容

           作为VimL表达式求值。i将被插入到行末。


4.        let i=i+1:这个命令将变量i的值加1,以便下一个行尾插入操作时使用。

这个命令将会在从第858行到第888行的每一行的行尾插入从130开始的自增数字。每次执行命令时,自增数字将会递增。 

 :let i=130 | 858,888g/$/s/$/\='    '.i/ | let i=i+1

在 Vim 中,点 . 是用来进行字符串拼接的操作符,它将左右两个字符串连接在一起,形成一个新的字符串。此命令即在数字i之前加入四个空格。

yy

复制一行

y+Shift+g(即G)

从光标当前行,复制到最后一行(在第一行的话,等价于:1,$y)

gg

到头部

Shift+g(即G)

到尾部

dd

删除光标行(准确来说是剪切,用p可粘贴出这行)

a

当前光标后面插入

i

当前光标位置插入

Shift+5(即%)

到另一个匹配的括号处

Shift+1

光标到行尾

0

光标到行首、

num+方向键

光标向方向移动num格

note:

vim中的「数字键」代表重复次数,可以配合其他指令简化操作,比如:

  • 10↓或10j可一次向下移动10行。

  • 2p可以一次粘贴2行

  • 2dd可以一次剪切2行

    ​ 以此类推…

x

删除后一个字符

Shift+x(即X)

删除前一个字符

u

撤回

Ctrl+r

取消撤回

.(小数点)

重复刚才的操作

p

粘贴到下一行

Shift+p(即P)

粘贴到上一行

/word        Shift+8(即*)        Shift+3(即#)

搜索word,*是去搜到的下一个,#是去搜到的下一个;n是下一个,Shift+n是上一个。

2.Ctrl+v可视块模式

        在Vim中,Ctrl+v是一个常用的快捷键组合,用于进入可视块模式,可视块模式可以用于选择和编辑文本块(直接v则选中行,有的命令直接v的时候不可用)。

以下是在Vim中使用Ctrl+v的一些常见用法:

1.选择矩形块:按下Ctrl+v,然后使用方向键移动光标,可选择一个矩形文本块。


2.插入矩形文本:Shift+i 进入插入模式。


3.对齐文本:Shift+:  进入命令行模式,在命令行上输入对齐命令(例如left、right、center等)并按下回车键,可以对所选的文本进行对齐操作。


4.块注释:Shift+i 进入插入模式,输入注释符(例如#或//等),按下Esc键,可以在所选的每一行前添加注释符,实现块注释。


5.复制或剪切矩形块:修改所选内容,复制所选内容,剪切所选内容,将所选内容粘贴到光标所在位置。

3.分割窗口

:sp(:split)

在vim中,:sp命令用于水平分割当前窗口并打开一个新的空白文件,在分割窗口之后,你可以在新窗口中编辑文件。这样做的好处就是在编辑的时候,可以在新建窗口中参考其他文件内容或本文件别的内容。

:vsp

垂直分割窗口

:vsp GetBindInfotest.c        即在分割出的窗口打开此文件

一些在分割窗口中操作的常用命令和快捷键包括:
1.Ctrl + w + w                  切换焦点到下一个窗口
2.Ctrl + w + 方向键          在窗口之间切换
3.Ctrl + w + =                   使所有窗口大小相等
4.Ctrl + w + _                   最大化当前窗口的高度
5.Ctrl + w + |                    最大化当前窗口的宽度

6.Ctrl + w + v                   垂直分割窗口并打开文件

7.Ctrl + w + s

8.Ctrl + w + r                    交换窗口位置
要在新窗口中打开文件,可以使用命令 :e <文件路径> 或者 :sp <文件路径>。
当你完成在分割窗口中的操作后,可以使用快捷键 Ctrl + w + c关闭当前窗口;Ctrl + w + q也可以关闭窗口,当只有一个窗口后,将会退出vim。

4.find专题

1.目录中某个字符串在所有文件中替换

find directory -type f -exec sed -i 's/old_string/new_string/g' {} +

此命令的步骤如下:

find directory -type f:

        查找目录 directory 下的所有文件。
-exec sed -i 's/old_string/new_string/g' {} +:

        对选定的文件执行 sed 命令,使用正则表达式替换目标字符串为新字符串。
-i:

        直接修改文件内容,而不是在标准输出中显示结果。
's/old_string/new_string/g':

        指定替换的正则表达式,将 old_string 替换为 new_string。
{} +:

        将选定的文件作为参数传递给 sed 命令。

2.统计目录中代码的总行数

find /path/to/directory -type f -exec cat {} + | wc -l

此命令的步骤如下:

find /path/to/directory -type f:

        查找目录 /path/to/directory 下的所有文件。
-type f:

        只匹配普通文件,排除目录。
-exec cat {} +:

        对于每个找到的文件,使用 cat 命令将其内容输出到标准输出。
{}:

        表示找到的文件。
+:
        表示一次性处理所有文件,而不是每个文件都执行一次命令。
|:

        管道操作符,将前一个命令的输出作为后一个命令的输入。
wc -l:

        统计输入中的行数。

( | wc -l:将 cat 命令输出的内容传递给 wc -l 命令进行行数统计)


        由于使用 cat 命令将所有文件的内容输出,这种方法适用于统计任何类型的文件,而不仅限于代码文件。如果只想显示代码文件的行数,见下文。

3.统计一个目录中剔除可执行程序和库文件的总行数

使用find命令结合grep和wc命令来实现。假设目录名称为directory:

find directory -type f ! -executable ! -name '*.so*' -exec grep -v '^$' {} + | wc -l

此命令的步骤如下:

find directory -type f:

        查找目录directory下的所有文件。
! -executable:

        排除可执行程序,只选择非可执行文件。
! -name '*.so*':

        排除库文件,只选择非库文件。
-exec grep -v '^$' {} +:

        对选定的文件执行grep命令,过滤掉空行。
| wc -l:

        将过滤后的结果通过管道传递给wc命令,统计行数。

5.规整格式

1.快速删除^M

1.        :%s/\r//g

将本文件^M删除,如果出现^V则用:%s/^V//g,%s/\r//gc形式则是挨个确认替换。

2.        :set ff=unix        :w

把格式换成unix,^M将会全部消失,保存即可。

3.整个目录下全局删除^M

find /home/czy/gci_esqlc/gtest/src -type f -exec sed -i 's/\r//g' {} +

2.删除只有空格的行的空格(或制表符)

1.        :%s/^\s*$//

  • ^\s*$ 是正则表达式的模式:
    • ^ 表示行的开头
    • \s* 表示匹配零个或多个空白字符(包括空格和制表符)
    • $ 表示行的末尾
  • 替换部分为空,即删除匹配到的内容。

2.整个目录下全局操作

find /home/czy/gci_esqlc/gtest/src -type f -exec sed -i 's/^\s*$//g' {} +
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值