Vim 进阶1

Vim 进阶1

所有你觉得简单重复,可以自动化实现的操作,都是可以自动化实现的。

Vim光标移动拾遗

w:下一个单词的开头,e:下一个单词的结尾,b:上一个单词的开头,

0:行首(最行首,不管行首字符是否为空),$:行尾,^:非空字符行首,

%:匹配括号处,前跳后,后跳前都可,

gd:跳到某变量定义处(其实是当前函数体内,该变量第一次出现的位置),gD:整个文件内该变量第一次出现的位置,*#nN

[{:移动到前一个没有匹配的左大括号处,(用于跳到函数、循环等作用域的开头)

r:normal 模式下替换一个字符,如 ra 将当前字符替换为 a,R:normal模式下从当前到行尾替换

cw:删除单词并进入编辑模式,C:输出到行尾并进入编辑模式。S:删除整行并进入编辑模式,s:删除当前字符并进入编辑模式,

~:替换大小写,并后移一个字符

自定义计数操作

  • d2w:删除(其实d都是剪切)两个单词

  • 2dw:删除单词,做两遍。4dd == d3j

Vim 修饰词

  • i inner

    dip:(delete inner paragraph) 删除一段文字(空行分隔),删除操作不包括空行

    di(:删除括号内内容

  • a around

    dap:删除一段文字,删除操作包括空行

  • t till

    dt):删除从当前光标到本行下一个 ) 处,删除操作不包括 )

  • f find

    df):删除从当前光标到本行下一个 ) 处,删除操作包括 )

vim mark标签

  • m 生成一个 mark 标签,如 a ,生成一个名为 a 的标签
  • ` 跳转到一个 mark 标签,如 a ,跳转到名为 a 的标签处,恢复行列位置
  • ’ 跳转到一个 mark 标签,如 a ,跳转到名为 a 的标签处,仅恢复行位置,即跳到标签所在行行首
  • `` 或 ‘’ 在起跳点和标签 a 间反复横跳

mark 还有很多用法,可参考 https://vimjc.com/vim-mark.html

vim多标签页

对于vim这个来说, 单纯的用多子窗口(spvsp)来操作, 感觉还是不够的, 还要结合标签页tab pages来,才能更好的操作。

所有关于标签的命令都是以 :tab 开始的, 可以用tab键来查看提示

  • :tabnew 新建标签

  • :tabedit fileName 在新标签中打开文件,简写为 :tabe

  • :tabc 关闭当前标签, :tabo 关闭其他所有标签

  • :tabfirst 切换到第一个标签

  • :tablast 切换到最后一个标签

  • :tabp 切换到前一个标签 tab previous

  • :tabn 切换到下一个标签 tab next

  • :tabs 查看标签

  • gtgT 常规模式下直接切换标签

visual模式

  • v:逐字符选中
  • V:整行选中
  • C-v:矩形块 block 选中

搜索替换

:[range]s/from/to[flags]:在 range 范围内,将 from 替换为 to。 range、flags 常用含义如下

flags

flag作用
%复制上次替换命令的flags
g替换每行所有的匹配值(默认只替换每行的第一个匹配值)
c替换前需确认
e替换失败时不报错
i / I大小写不敏感 / 敏感

range

range功能
2121行
$最后一行
%全部行
21,25从21行到25行
.当前行
.+3当前行后的第3行
.,$当前行到最后一行
.,.5 / .,.+5当前行及之后5行

多个文件内替换

:args *.c *.h
:argdo %s/ext4/ext5/g 
:argdo update 
:argdo exit

注意 Vim 中的替换与 sed 中的替换其实是很像的:

sed -i "[range]s/from/to/[flags]" filename 将⽂件 filename 内的 from 替换为 to

-i 表示直接编辑文件内容,不加将会打印输出到 stdout。

Vim 宏

如生成从 1 到 1000 的序列等多次雷同的操作

  • 录制宏:q,如 qa 表示开始录制名称为 a 的宏。
  • 运行宏:@,如 @a 表示执行名称为 a 的宏,10@a 表示执行 10 次。

详见:Vim 重复操作的宏录制

安装插件

  • mkdir -p ~/.vim/pack/vendor/start
  • 将插件 clone 到该目录下即可

ctags

生成 tags 方便跳转看代码,支持多种语言

  • 安装 ctags:sudo apt install exuberant-ctags
  • 创建 tags 文件 ctags -R .
  • 若查找 inode_operations 的定义
    • No tags file
      • 当前目录不存在 tags 文件
      • 在父目录中寻找 tags 文件:在 .vimrc 中添加 set tags=./tags;,tags
  • 使用:
    • 查找当前文件中的某个变量的定义:光标在该变量上,Crtl+]
    • 列出所有某个变量的定义及引用:g]
    • 直接打开定义 inode_operations 的文件:直接在当前目录下,命令行中 vim -t inode_operations

shell使用vim键位

  • bash : set -o vi

  • zsh : bindkey -v

  • fish : fish_vi_key_bindings

这里说一下 bash 中默认是 emacs 模式,具体当前是什么模式可以用 set -o 命令查看,然后通过 set -o enacsset -o vi 来回切换。

键位图中文版

在这里插入图片描述

其他常用插件

  • gitgutter
  • easymotion
  • fzf
  • Vim-linux-coding-style
  • cscope

Ref:

https://www.bilibili.com/video/BV1PL411M7bg?from=search&seid=12655157522675339145&spm_id_from=333.337.0.0

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/532623.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

攻防世界web题ics-06(爆破id值)

打开界面:嚯!这花里胡哨 点来点去只有报表中心有回显: 发现url中id等于1,sql注入尝试无果, burp工具爆破id 对id的值进行爆破 burp报ERROR的话这是个bug,先点击Hex后点decimal手动刷新就可以使用 强行总…

crontab用法与实例

crontab用法与实例 本文基于 ubuntu 18.04 在Linux系统的实际使用中,可能会经常碰到让系统在某个特定时间执行某些任务的情况,比如定时采集服务器的状态信息、负载状况;定时执行某些任务/脚本来对远端进行数据采集等。这里将介绍下crontab的配…

手工sql注入常规总结

1.发现注入点 2.报数据库 先用单引号(也尝试双引号)闭合前面的语句,使注入的语句能够执行, 数字 0 :匹配字段,还有 11 12 等等都可以使用,有些网站会有过滤处理,建议采用 1%2b12 1%2b1>1 绕…

Systemd入门教程:命令篇

Systemd入门教程:命令篇 转自:http://www.ruanyifeng.com/blog/2016/03/systemd-tutorial-commands.html 作者: 阮一峰 日期: 2016年3月 7日 Systemd 是 Linux 系统工具,用来启动守护进程,已成为大多数…

【CVE-2018-12613】phpmyadmin 4.8.1 远程文件包含漏洞复现

**环境:**http://62.234.56.138:8080/server_databases.php 官网下载phpmyadmin 4.8.1 源码:index.php文件中 函数含义: targer非空targer是否位字符串不能以index为开头,即过滤了index值不能出现在blacklist内,即…

Systemd 入门教程:实战篇

Systemd 入门教程:实战篇 转自:https://www.ruanyifeng.com/blog/2016/03/systemd-tutorial-part-two.html 作者: 阮一峰 日期: 2016年3月 8日 上一篇文章,我介绍了 Systemd 的主要命令,今天介绍如何使…

关于ubuntu自定义service服务时找不到/usr/lib/systemd/system目录的问题

关于ubuntu自定义service服务时找不到/usr/lib/systemd/system目录的问题 问题 我们知道在 systemd 取代了 init 而成为广大 Linux 系统中 PID 为1的守护进程之后,Linux 中的服务(service)主要有 systemd 命令组来实现。在大多数发行版 Lin…

攻防世界web2(逆向加密算法)

打开网页有如下代码&#xff1a; <?php $miwen"a1zLbgQsCESEIqRLwuQAyMwLyq2L5VwBxqGA3RQAyumZ0tmMvSGM2ZwB4tws";function encode($str){$_ostrrev($str);// echo $_o;for($_00;$_0<strlen($_o);$_0){$_csubstr($_o,$_0,1);$__ord($_c)1;$_cchr($__);$_$_.$…

ctags 基本使用方法

ctags 基本使用方法 简介 ctags&#xff08;Generate tag files for source code&#xff09;是vim下方便代码阅读的工具。尽管ctags也可以支持其它编辑器&#xff0c;但是它正式支持的只有 Vim。并且 Vim 中已经默认安装了 ctags&#xff0c;它可以帮助程序员很容易地浏览源…

vimrc配置文件

vimrc配置文件 转自&#xff1a;https://www.ruanyifeng.com/blog/2018/09/vimrc.html Vim 是最重要的编辑器之一&#xff0c;主要有下面几个优点。 可以不使用鼠标&#xff0c;完全用键盘操作。系统资源占用小&#xff0c;打开大文件毫无压力。键盘命令变成肌肉记忆以后&am…

CTFHUB 《请求方式》 http请求,curl命令总结

打开网页&#xff1a; 思路一&#xff1a; 根据题目&#xff0c;应该是向网页发送get方式请求&#xff0c;但并没有具体规定要发送什么&#xff0c;尝试get发送参数后&#xff0c;都没有返回网页&#xff0c;emmm’…好像不是我想的那种套路 思路二&#xff1a; 网上找到思路…

Vim进阶2 map映射

Vim进阶2 map映射 简介 map是一个 vim 中的一些列映射命令&#xff0c;将常用的很长的命令映射到一个新的功能键上。map是Vim强大的一个重要原因&#xff0c;可以自定义各种快捷键&#xff0c;用起来自然得心应手。 map系列命令格式 格式 以 map 命令为例&#xff0c;它的…

CTFHUB 《基础认证》:burp使用,basic请求了解

题目简介&#xff1a;在HTTP中&#xff0c;基本认证&#xff08;英语&#xff1a;Basic access authentication&#xff09;是允许http用户代理&#xff08;如&#xff1a;网页浏览器&#xff09;在请求时&#xff0c;提供 用户名 和 密码 的一种方式。详情请查看 https://zh.w…

信息量、熵、交叉熵、KL散度、JS散度杂谈及代码实现

信息量、熵、交叉熵、KL散度、JS散度杂谈及代码实现 信息量 任何事件都会承载着一定的信息量&#xff0c;包括已经发生的事件和未发生的事件&#xff0c;只是它们承载的信息量会有所不同。如昨天下雨这个已知事件&#xff0c;因为已经发生&#xff0c;既定事实&#xff0c;那…

CTFHUB《Web-信息泄露-备份文件下载》网站源码,

1.网站源码 三种方法&#xff1a; 方法一&#xff1a;dirsearch扫描git泄露 有文件下载 拿到flag 方法二&#xff1a;御剑&#xff08;超时10s&#xff09; 御剑其实也可以扫出来&#xff0c;但是一般我们扫域名超时时间都是三秒&#xff0c;本环境中需要超时10秒才能得到…

Linux下C/C++程序编译链接加载过程中的常见问题及解决方法

Linux下C/C程序编译链接加载过程中的常见问题及解决方法 1 头文件包含的问题 报错信息 该错误通常发生在编译时&#xff0c;常见报错信息如下&#xff1a; run.cpp:2:10: fatal error: dlpack/dlpack.h: No such file or directory#include <dlpack/dlpack.h>^~~~~~~…

DVWA Command Injection 练习总结

low: 首先查看源码没有对字符进行任何过滤 target参数为将要ping的ip地址&#xff0c;比如在输入框输入127.0.0.1后&#xff0c;对于windows系统&#xff0c;会发出ping 127.0.0.1操作。 这里可以引入命令行的几种操作方式&#xff1a; A && B&#xff1a; 先执行A…

在vimrc中设置record

在vimrc中设置record Vim的record功能在大量重复操作的场景下非常实用&#xff0c;但是&#xff0c;一般我们都要每次进入Vim时重新录制record。而对于一些非常常用的record&#xff0c;我们想让它永久地保持&#xff0c;我们知道这种需求需要借助Vim的配置文件vimrc。但是具体…

DVWA sql注入 WP

sql注入基本思路&#xff1a; 1.源码 2.判断数字型和字符型 3.猜测字段数 4.查询数据库中的字段 5.查询表中的字段 6.查询user表中的字段 7.拿字段中数据 low: 1.源码&#xff1a; <?phpif( isset( $_REQUEST[ Submit ] ) ) {// Get input$id $_REQUEST[ id ];// Check…

cmake find_package路径详解

cmake find_package路径详解 转自&#xff1a;https://zhuanlan.zhihu.com/p/50829542 经常在Linux下面写C程序&#xff0c;尤其是需要集成各种第三方库的工程&#xff0c;肯定对find_package指令不陌生。 这是条很强大的指令。可以直接帮我们解决整个工程的依赖问题&#x…