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 的主要命令,今天介绍如何使…

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

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

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

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

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

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

DVWA Command Injection 练习总结

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

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…

DVWA File Inclusion——Writeup

文件包含&#xff1a; 即File Inclusion&#xff0c;意思是文件包含&#xff08;漏洞&#xff09;&#xff0c;是指当服务器开启allow_url_include选项时&#xff0c;就可以通过php的某些特性函数&#xff08;include()&#xff0c;require()和include_once()&#xff0c;requi…

DVWA Cross Site Request Forgery (CSRF) -------WP

CSRF: 介绍 CSRF跨站点请求伪造(Cross—Site Request Forgery)&#xff0c;跟XSS攻击一样&#xff0c;存在巨大的危害性&#xff0c;你可以这样来理解&#xff1a; 攻击者盗用了你的身份&#xff0c;以你的名义发送恶意请求&#xff0c;对服务器来说这个请求是完全合法的&…

DVWA upload

LOW medium high impossible

sqlilab--writeup (5~6) 布尔盲注

1.# 和 – &#xff08;有个空格&#xff09;表示注释&#xff0c;可以使它们后面的语句不被执行。在url中&#xff0c;如果是get请求**(记住是get请求&#xff0c;也就是我们在浏览器中输入的url)** &#xff0c;解释执行的时候&#xff0c;url中#号是用来指导浏览器动作的&am…

PyTorch导出JIT模型并用C++ API libtorch调用

PyTorch导出JIT模型并用C API libtorch调用 本文将介绍如何将一个 PyTorch 模型导出为 JIT 模型并用 PyTorch 的 CAPI libtorch运行这个模型。 Step1&#xff1a;导出模型 首先我们进行第一步&#xff0c;用 Python API 来导出模型&#xff0c;由于本文的重点是在后面的部署…

sqli-lab--writeup(7~10)文件输出,时间布尔盲注

前置知识点&#xff1a; 1、outfile是将检索到的数据&#xff0c;保存到服务器的文件内&#xff1a; 格式&#xff1a;select * into outfile “文件地址” 示例&#xff1a; mysql> select * into outfile ‘f:/mysql/test/one’ from teacher_class; 2、文件是自动创建…

sqli-lab———writeup(11~17)

less11 用户名提交单引号显示sql语法错误&#xff0c;故存在sql注入 根据单引号报错&#xff0c;在用户名和密码任意行输入 万能密码&#xff1a;‘ or 11# 输入后username语句为&#xff1a;SELECT username, password FROM users WHERE username or 11; 双引号 password语…

深入理解Python中的全局解释锁GIL

深入理解Python中的全局解释锁GIL 转自&#xff1a;https://zhuanlan.zhihu.com/p/75780308 注&#xff1a;本文为蜗牛学院资深讲师卿淳俊老师原创&#xff0c;首发自公众号https://mp.weixin.qq.com/s/TBiqbSCsjIbNIk8ATky-tg&#xff0c;如需转载请私聊我处获得授权并注明出处…

sqli-lab————Writeup(18~20)各种头部注入

less18 基于错误的用户代理&#xff0c;头部POST注入 admin admin 登入成功&#xff08;进不去重置数据库&#xff09; 显示如下 有user agent参数&#xff0c;可能存在注入点 显示版本号&#xff1a; 爆库&#xff1a;User-Agent:and extractvalue(1,concat(0x7e,(select …