命令模式下的命令及快捷键
cs
# dd删除光所在行的内容
# ndd从光标所在行开始向下删除n行
# yy复制光标所在行的内容
# nyy复制光标所在行向下n行的内容
# p将复制的内容粘贴到光标所在行以下(小写)
# P将复制的内容粘贴到光标所在行以上(大写)
# ^立即跳转到光标所在行的行首
# $立即跳转到光标所在行的行尾
# gg跳转到文档的第一行行首
# G跳转到文档的最后一行行首
# ngg/G 跳转到第n行
# u撤销上一次编辑
# n(↑/↓/←/→)向上/下/左/右移动n字符
# w:向右跳转,如果光在字母上则跳转到下一个符号上,如果光标在符号上则跳转到下一个字母上,如果是文档是文本则调准到下一个单词
# b:与w相反,它是往左跳
pP复制命令
cpp
具体场景
1. 复制单行内容
复制整行(按 yy 或 Y 复制):
p → 粘贴到 当前行下方(新行)
P → 粘贴到 当前行上方(新行)
2. 复制多行内容
复制多行后(如 3yy 复制3行):
p → 粘贴到 当前行下方(多行整体插入)
P → 粘贴到 当前行上方(多行整体插入)
3. 复制单词或字符
复制单词(按 yw 或 yiw)或字符(按 y + 移动命令):
p → 粘贴到 光标右侧(字符后)
P → 粘贴到 光标左侧(字符前)
实用技巧
1. 快速调整代码块位置
复制一行(yy)→ 移动到目标行 → 按 p 或 P 快速上下移动代码
cs
5yy p #复制光标所在行向下5行的内容并将复制的内容粘贴到光标所在行以下
命令模式→插入(编辑)模式
cs
# s------------删除光标所在的字符 并进入编辑模式
# S------------删除光标所在行的内容 并进入编辑模式
# o------------向光标所在行下方插入新行 并进入编辑模式
# O------------向光标所在行上方插入新行 并进入编辑模式
# a------------在光标右侧移动一个字符,并进入编辑模式
# A------------光标移动到行尾,并进入插入模式
# i------------进入编辑模式,在光标所在位置进行编辑
# I------------回到光标所在行的行首 并进入编辑模式
# ESC 退出笔记模式回到 命令模式
末行模式
cs
# :q------------未做修改的情况下可以直接退出
# :wq------------保存并退出
# :w------------保存
# :w /dir/file------------将文件另存到/dir/file中
# :q!------------放弃修改并退出
# :wq!------------强制保存并退出
# :set nu------------开启文档的行号(set number)
# :set nonu------------关闭文档的行号(set no number)
末行模式的搜索替换
cs
# /搜索 /+要搜索的字符串
# :n1,n2 s/old/new/g
n1:起始行
n2:中止行
s:表示搜索
old:表示要搜索的目标字符串
new:要将new字符串替换掉old字符串
g:替换所有的old字符串
%:表示全文
#:r /dir/file------------在光标位置处写入指定的新文件
#:g/word/d------------在全局范围内删除指定的字符串
#:n1,n2 d------------删除n1到n2的行
#:n1,n2 copy n3---------------n1到n2为止内容复制到n3行
vim的配置文件
cpp
# /etc/vimrc是全局配置文件,如果root用户修改了该文件,所有用户的vim都会受到影响。
# ~/.vimrc 这个用户个人的配置文件他的优先级高于全局的配置文件
# set number 会使vim默认开始行号
# set tabstop=1 他会修改vim的tab的显示效果。
# set softtabstop=4 他会修改tab键的点击效果,它的效果取决于tabstop的值。
# set shiftwidth=4 自动缩进的宽度
# set mouse=a 开启鼠标
# syntax on 开启语法检测功能
# set hlsearch "高亮度反白
# set backspace=2 "开启删除键的功能
# set autoindent "自动缩排
修改vim的配置文件
如要修改vim默认配置使开启行号,自动缩进,tab快捷键空4格
cpp
[root@server ~]# vim ~/.vimrc
....
1 set number #会使vim默认开始行号
2 set autoindent #"自动缩排"
3 set smartindent #开启智能缩进模式,基于代码逻辑自动调整缩进
4 filetype plugin indent on #filetype on功能:启用文件类型检测,
# filetype plugin on功能:
# 加载与文件类型相关的插件(位于 ~/.vim/ftplugin/),
#iletype indent on功能:
# 启用与文件类型相关的缩进规则(位于 ~/.vim/indent/),
5 set tabstop=4 #修改vim的tab的显示效果为空4格。
6
....
"~/.vimrc" 6L, 83B
// ~/.vimrc 这个用户个人的配置文件他的优先级高于全局的配置文件
vim的异常模拟
cpp
# vim编辑xxx文件时,不是直接编辑xxx,而是复制一个副本名为.xxx.swp的文件,然后修编辑该文件。
# 当我们使用:wq保存时,会用.xxx.swp覆盖掉xxx文件,并且会删除.xxx.swp。
# 当我们使用:q!退出,会删除.xxx.swp。
# 当在使用vim的过程中没有是 wq q!等退出方式 .xxx.swap就不会删除
# 这就会导致下一次再编辑此文件,会出现如下场景:
E325: 注意
发现交换文件 ".passwd_copy.swp"
所有者: root 日期: 日 10月 20 22:24:57 2024
文件名: ~root/passwd_copy
修改过: 是
用户名: root 主机名: NLCSA2
进程 ID: 8678 (STILL RUNNING)
正在打开文件 "passwd_copy"
日期: 日 10月 20 22:20:15 2024
(1) Another program may be editing the same file. If this is the case,
be careful not to end up with two different instances of the same
file when making changes. Quit, or continue with caution.
(2) An edit session for this file crashed.
如果是这样,请用 ":recover" 或 "vim -r passwd_copy"
恢复修改的内容 (请见 ":help recovery")。
如果你已经进行了恢复,请删除交换文件 ".passwd_copy.swp"
以避免再看到此消息。
交换文件 ".passwd_copy.swp" 已存在!
以只读方式打开([O]), 直接编辑((E)), 恢复((R)), 退出((Q)), 中止((A)):
# 此时输入E,忽略.xxx.swp中的修改重新编辑文件
# 此时输入R,会读取.xxx.swp中的修改,继续编辑。
# 如果想要取消当前这种异常状态,在编辑过文件后,删除.xxx.swp文件即可