首页 > 其他分享 >vim的各种快捷键

vim的各种快捷键

时间:2023-12-02 14:11:35浏览次数:34  
标签:字符 常用 各种 删除 Ctrl 移动 vim 快捷键 光标

一、准备一份用于练习的文件

我这里随便选了个python文件,作为test.py

#!/bin/bash

flag1=0 # 确认用户名是否被注册过的标识
user_table="user_info"
db_name="your_database_name"
db_host="your_database_host"
db_user="your_database_user"
db_password="your_database_password"

echo "欢迎来到注册登录系统!"

# 连接到数据库
connect_db() {
  mysql -h ${db_host} -u ${db_user} -p${db_password} ${db_name} -e "$1"
}

# 创建用户信息表
create_user_table() {
  create_table_query="CREATE TABLE IF NOT EXISTS ${user_table} (username VARCHAR(255), password VARCHAR(255));"
  connect_db "${create_table_query}"
}

# 检查用户名是否已存在
check_existing_username() {
  check_username_query="SELECT COUNT(*) FROM ${user_table} WHERE username = '$1';"
  result=$(connect_db "${check_username_query}")
  if [ ${result} -eq 1 ]; then
    flag1=1
  fi
}

# 登录函数
login() {
  echo "登录"
  login_success=0

  while true
  do
    read -p "请输入你的用户名:" username
    read -p "请输入你的密码:" passwd
    check_login_query="SELECT COUNT(*) FROM ${user_table} WHERE username = '$username' AND password = '$passwd';"
    result=$(connect_db "${check_login_query}")
    if [ ${result} -eq 1 ]; then
      echo "登录成功"
      login_success=1
      break
    else
      echo "用户名或密码错误,请重新输入"
      continue
    fi
  done
}

# 注册函数
register() {
  echo "注册"

  while true
  do
    read -p "请输入你要注册的账号:" username
    check_existing_username ${username}
    if [ ${flag1} -eq 1 ]; then
      echo "用户名已经存在,请换一个用户名!"
      continue
    fi
    break
  done

  while true
  do
    read -p "请输入你注册的密码:" passwd1
    read -p "请再次输入你的密码:" passwd2
    if [ "$passwd1" == "$passwd2" ]; then
      echo "注册成功"
      insert_user_query="INSERT INTO ${user_table} (username, password) VALUES ('$username', '$passwd1');"
      connect_db "${insert_user_query}"
      break
    else
      echo "两次密码输入不一致"
      continue
    fi
  done
}

# 主循环
while true
do
  read -p "请输入你的选择,1为登录,2为注册,q为退出:" select

  if [ ${select} == "1" ]; then
    login
  elif [ ${select} == "2" ]; then
    register
  elif [ ${select} == "q" ]; then
    break
  else
    echo "输入有误"
  fi
done

二、命令模式下的快捷键

用户刚刚启动 vi/vim,便进入了命令模式。

此状态下敲击键盘动作会被Vim识别为命令,而非输入字符。比如我们此时按下i,并不会输入一个字符,i被当作了一个命令。

1、移动光标

  • 上:k/↑
  • 下:j/↓
  • 左:h/←
  • 右:l/→

2、删除文字

  • x:删除光标选中的字符
  • dd:删除光标所在行
  • dw:删除光标所在位置的单词或者文字,包括test.py里面的user_table、确认用户名是否被注册过的标识。中文中包含特殊字符就会删除截止到特殊字符
  • d5j:删除六行(包括光标所在行)
  • dG:删除光标所在位置到文件末尾的所有内容

3、复制粘贴

yy:复制

p:粘贴

4、撤销上一次操作

u

5、恢复上一次撤销的操作

Ctrl+r

6、查找

/

7、替换单个字符

r:选中要替换的字符

然后输入想要替换的内容

8、光标移动到最左边

0

9、光标移动到行尾

$

10、跳转

gg:跳转到文档首行

G:跳转到文档末行

11、翻页

Ctrl+f:向下翻页

Ctrl+b:向上翻页

Ctrl+d:向下滚动半屏

Ctrl+y:向上一行一行翻页

12、删除全文

gg dG

常用方法列表

移动光标的方法

h 或 向左箭头键(←) 光标向左移动一个字符
j 或 向下箭头键(↓) 光标向下移动一个字符
k 或 向上箭头键(↑) 光标向上移动一个字符
l 或 向右箭头键(→) 光标向右移动一个字符
[Ctrl] + [f] 屏幕『向下』移动一页,相当于 [Page Down]按键 (常用)
[Ctrl] + [b] 屏幕『向上』移动一页,相当于 [Page Up] 按键 (常用)
[Ctrl] + [d] 屏幕『向下』移动半页
[Ctrl] + [u] 屏幕『向上』移动半页
+ 光标移动到非空格符的下一行
- 光标移动到非空格符的上一行
n 那个 n 表示『数字』,例如 20 。按下数字后再按空格键,光标会向右移动这一行的 n 个字符。例如 20 则光标会向后面移动 20 个字符距离。
0 或功能键[Home] 这是数字『 0 』:移动到这一行的最前面字符处 (常用)
$ 或功能键[End] 移动到这一行的最后面字符处(常用)
H 光标移动到这个屏幕的最上方那一行的第一个字符
M 光标移动到这个屏幕的中央那一行的第一个字符
L 光标移动到这个屏幕的最下方那一行的第一个字符
G 移动到这个档案的最后一行(常用)
nG n 为数字。移动到这个档案的第 n 行。例如 20G 则会移动到这个档案的第 20 行(可配合 :set nu)
gg 移动到这个档案的第一行,相当于 1G 啊! (常用)
n n 为数字。光标向下移动 n 行(常用)

文本的搜索与替换

/word 向光标之下寻找一个名称为 word 的字符串。 (常用)
?word 向光标之上寻找一个字符串名称为 word 的字符串。
n 这个 n 是英文按键。代表重复前一个搜寻的动作。
N 这个 N 是英文按键。与 n 刚好相反,为『反向』进行前一个搜寻动作。
:n1,n2s/word1/word2/g n1 与 n2 为数字。在第 n1 与 n2 行之间寻找 word1 这个字符串,并将该字符串取代为 word2 (常用)
:1,$s/word1/word2/g 或 :%s/word1/word2/g 从第一行到最后一行寻找 word1 字符串,并将该字符串取代为 word2 !(常用)
:1,$s/word1/word2/gc 或 :%s/word1/word2/gc 从第一行到最后一行寻找 word1 字符串,并将该字符串取代为 word2 !且在取代前显示提示字符给用户确认 (confirm) 是否需要取代!(常用)

删除/剪切、复制与粘贴

x, X 在一行字当中,x 为向后删除一个字符 (相当于 [del] 按键), X 为向前删除一个字符(相当于 [backspace] 亦即是退格键) (常用)
nx n 为数字,连续向后删除 n 个字符。举例来说,我要连续删除 10 个字符, 『10x』。
dd 删除/剪切光标所在的那一整行(常用)
ndd n 为数字。删除/剪切光标所在的向下 n 行,例如 20dd 则是删除 20 行 (常用)
d1G 删除光标所在到第一行的所有数据
dG 删除光标所在到最后一行的所有数据
d$ 删除游标所在处,到该行的最后一个字符
d0 那个是数字的 0 ,删除光标所在处,到该行的最前面一个字符
yy 复制游标所在的那一行(常用)
nyy n 为数字。复制光标所在的向下 n 行,例如 20yy 则是复制 20 行(常用)
y1G 复制游标所在行到第一行的所有数据
yG 复制游标所在行到最后一行的所有数据
y0 复制光标所在的那个字符到该行行首的所有数据
y$ 复制光标所在的那个字符到该行行尾的所有数据
p, P p 为将已复制的数据在光标下一行贴上,P 则为贴在光标上一行! 举例来说,我目前光标在第 20 行,且已经复制了 10 行数据。则按下 p 后, 那 10 行数据会贴在原本的 20 行之后,亦即由 21 行开始贴。但如果是按下 P 呢? 那么原本的第 20 行会被推到变成 30 行。 (常用)
J 将光标所在行与下一行的数据结合成同一行
c 重复删除多个数据,例如向下删除 10 行,[ 10c ]
u 复原前一个动作。(常用)
[Ctrl]+r 重做上一个动作。(常用)
. 重复前一个动作。 如果你想要重复删除、重复贴上等等动作,按下小数点『.』就好了! (常用)

三、输入模式下的快捷键

在命令模式按下 i 就进入到了输入模式

1、自动补全

Ctrl+p/Ctrl+n

2、复制

Ctrl+e:逐字复制光标下一行的内容

Ctrl+y:逐字复制光标上一行的内容

3、定位行首和行尾

Home:定位到光标行首

End:定位到光标行尾

4、复制剪贴板的内容

shift+insert

5、删除光标前后的内容

删除光标之前的内容:Backspace

删除光标之后的内容:Delete

四、末行模式下的快捷键

在命令模式按下:(英文冒号)就进入到了末行模式

1、暂时给文档设置行号

:set nu

2、删除包含某关键字的行

:g/关键字/d

3、删除全文

G
:1,.d

4、末行模式下的储存、离开等指令

:w 将编辑的数据写入硬盘中(常用)
:w! 若文件属性为『只读』时,强制写入该文件。不过,到底能不能写入, 还是跟你对该文件的权限有关
:q 离开 vi (常用)
:q! 若曾修改过文件,又不想储存,使用 ! 为强制离开不储存。
:wq 储存后离开,若为 :wq! 则为强制储存后离开 (常用)
ZZ 这是大写的 Z 喔!如果修改过,保存当前文件,然后退出!效果等同于(保存并退出)
:x 效果等同于(保存并退出)
:X 大写的X,用于加密文件
ZQ 不保存,强制退出。效果等同于:q!
:w [filename] 将编辑的数据储存成另一个文件(类似文件另存为)
:r [filename] 在编辑的数据中,读入另一个文件的数据。亦即将 『filename』 这个文件内容加到光标所在行后面
:n1,n2 w [filename] 将 n1 到 n2 的内容储存成 filename 这个文件。
:! command 暂时离开 vi 到bash命令行下执行 command 的显示结果!例如 『:! ls /home』即可在 vi 当中察看 /home 底下以 ls 输出的文件信息!

五、vim中文帮助文档

VIM 中文帮助: 总览最常用的命令 (sourceforge.net)
img

标签:字符,常用,各种,删除,Ctrl,移动,vim,快捷键,光标
From: https://www.cnblogs.com/misakivv/p/17871536.html

相关文章

  • Vim使用技巧
    Vim基础配置'设置编码'setfileencodings=utf-8,ucs-bom,gb18030,gbk,gb2312,cp936settermencoding=utf-8setencoding=utf-8'显示行号'setnusetnumber'突出显示当前行'setcursorlinesetcul'cursorline的缩写形式''突出显示当前列'setcur......
  • [good]c语言中各种类型
    #include<stdio.h>#include<stdlib.h>#include<string.h>#include<stdarg.h>#include<assert.h>#include<math.h>#include<time.h>#include<limits.h>#include<float.h>#include<ctype.h>#i......
  • linux学习记录(tmux、vim) 9.23
    tmux和vim1、tmux(1)分屏(2)允许把terminal断开之后,继续运行top命令,类似windows的任务管理器,显示各进程运行状况写一个文档或者代码的时候,在tmux里面写,不用担心断网tmux开一堆---->session开一堆(常用)---->window开一堆---->pane(常用)---->shell每一个pane都会打开一......
  • 软件测试/人工智能|PyCharm常用快捷键指南
    简介我们安装好pycharm之后,就要开始使用pycharm了,但是pycharm的操作太多,顶部菜单选项已经很多,每个顶部菜单的选项下又有很多个子操作,所以我们在写代码的时候,如果要进行什么操作的话,在顶部菜单操作,就会显得比较繁琐,经常要找两级甚至三级菜单,如果我们对pycharm的快捷键比较熟悉的......
  • 各种数据库拿到某表的字段和备注信息
    Oracle表字段和备注信息获取selecta.OWNERastable_schema,a.TABLE_NAMEastable_name,d.COMMENTSastale_comments,a.COLUMN_NAMEascolumn_name,a.COLUMN_IDascolumn_id,c.COMMENTSascol_comments,a.DATA_TYPEasdata_type,a......
  • vscode 文件上传快捷键 shift+alt+s (ftp专用)插件用的 ftp-sync
    vscode文件上传快捷键shift+alt+s(ftp专用)插件用的ftp-sync{"key":"shift+alt+s","command":"extension.ftpsyncuploadselected"}......
  • Linux关于vim的一些操作指令
    1.模式:2.Vim具有多种工作模式,最基本的有两种:命令模式和插入模式。3.在命令模式下,键盘输入被解释为命令,例如移动光标、删除文本等。4.在插入模式下,键盘输入直接插入到文本中。5.基本操作:6.进入插入模式:按下i键。7.保存文件:在命令模式下输入:w。8.退出Vim:在命令模式下输入:q。9......
  • Linux vi 和 vim编辑器(学习笔记)
    1简介所有的Linux系统都会内建vi文本编辑器。vim具有程序编辑的能力,可以看做是vi的增强版本,可以主动的以字体颜色辨别语法的正确性,方便程序设计。代码补完、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。2vi和vim常用的三种模式2.1 正常模式以vim打开一......
  • 带你领略VIM的高级操作
    导读此文收集了一些简单的VIM操作,这些操作要么其它普通文本编辑器不能完成,要么完成起来很慢。通过本文的介绍,可以坚定初学者学习VIM的决心与信心。如果你有什么好的易于演示的简易技巧,欢迎留言。另外,如果没有明确说明,本文中的提到的按键均是大小写敏感的。例如,文中提到“......
  • .vimrc
    vim配置文件更新时间2023/11/29点击查看代码"插件开始的位置callplug#begin('~/.vim/plugged')"语法检查查"Plug'w0rp/ale'"代码自动完成,安装完插件还需要额外配置才可以使用Plug'ycm-core/YouCompleteMe'"用来提供一个导航目录的侧边栏Plug'scrooloose/n......