在 Vim 中,以下是回到当前行起始位置和末尾位置的操作:
-
回到当前行的起始位置:
- 按
0
(零)键,这是移动光标到当前行的最前面(行首)。 - 按
^
(Shift + 6),这是移动光标到当前行第一个非空白字符处。
- 按
-
回到当前行的末尾位置:
- 按
$
(Shift + 4),这是移动光标到当前行的最后一个字符处。
- 按
这些快捷键非常实用,可以帮助你快速在行内移动光标,从而提高编辑效率。
在 Vim 中,以下是撤销和取消撤销操作的快捷键:
-
撤销上一步的操作:
- 按
u
键,可以撤销上一步的操作。 - 按
U
键(Shift + u)可以撤销当前行的所有修改。
- 按
-
取消撤销上一步的操作(重做):
- 按
Ctrl + r
键,可以重做撤销的操作。
- 按
这两个操作可以帮助你轻松地在编辑过程中进行错误修正和操作恢复。
在 Linux 系统中,Ctrl + Z
会将当前进程挂起并放入后台。要恢复被挂起的进程并查看后台任务,可以使用以下步骤:
-
查看后台任务:
- 使用
jobs
命令可以列出所有后台任务。输出示例:[1]+ Stopped vim filename [2]- Stopped another_command
- 使用
-
恢复对应的任务:
- 使用
fg
命令可以将后台任务恢复到前台。若有多个任务,可以指定任务编号,例如fg %1
恢复编号为 1 的任务。fg %1
- 使用
-
将任务继续在后台运行:
- 使用
bg
命令可以将挂起的任务继续在后台运行。例如,bg %1
将编号为 1 的任务继续在后台运行。bg %1
- 使用
-
查看后台任务的详细信息:
- 使用
ps
命令可以查看进程的详细信息。例如:ps aux | grep vim
- 使用
总结:
jobs
查看后台任务。fg %n
恢复编号为 n 的任务到前台。bg %n
让编号为 n 的任务继续在后台运行。
这些命令可以帮助你有效地管理和控制在后台运行的任务。
在 Vim 中,复制和粘贴的操作可以通过视觉模式和命令模式来实现。以下是具体的操作方法和示例:
复制和粘贴某几个字符
-
复制某几个字符:
- 进入正常模式,按
v
进入可视模式。 - 使用方向键或
h
,j
,k
,l
移动光标选择需要复制的字符。 - 按
y
(yank)复制选中的字符。
- 进入正常模式,按
-
粘贴字符:
- 将光标移动到要粘贴的位置。
- 按
p
将复制的字符粘贴到光标后面,或按P
将字符粘贴到光标前面。
复制和粘贴某一行
-
复制某一行:
- 在正常模式下,光标放在要复制的行上。
- 按
yy
复制当前行。
-
粘贴行:
- 将光标移动到要粘贴的位置。
- 按
p
将复制的行粘贴到光标下一行,或按P
将行粘贴到光标上一行。
复制和粘贴多行
-
复制多行:
- 在正常模式下,光标放在要复制的第一行上。
- 按
V
进入可视行模式。 - 使用
j
或k
移动光标选择需要复制的多行。 - 按
y
复制选中的行。
-
粘贴多行:
- 将光标移动到要粘贴的位置。
- 按
p
将复制的多行粘贴到光标下一行,或按P
将多行粘贴到光标上一行。
示例
复制某几个字符
- 将 “Hello, World!” 中的 “World” 复制并粘贴到句子的末尾:
操作:Hello, World!
- 移动光标到 “W”。
- 按
v
,然后移动光标选择 “World”。 - 按
y
复制选中的字符。 - 移动光标到句子末尾。
- 按
p
粘贴 “World”。
复制某一行
- 复制整行 “Hello, World!”:
操作:Hello, World!
- 光标放在该行。
- 按
yy
复制该行。 - 将光标移动到下一行。
- 按
p
粘贴该行。
复制多行
- 复制以下两行:
操作:Line 1 Line 2
- 光标放在 “Line 1” 行。
- 按
V
进入可视行模式。 - 按
j
选择 “Line 1” 和 “Line 2” 两行。 - 按
y
复制选中的两行。 - 将光标移动到要粘贴的位置。
- 按
p
粘贴两行。
通过这些操作,您可以轻松在 Vim 中进行字符、行和多行的复制和粘贴。
在 Vim 中,可以使用块可视模式(Visual Block Mode)来按列复制和操作文本。以下是具体的操作步骤和示例:
按列复制的步骤
-
进入块可视模式:
- 在正常模式下,按
Ctrl + v
进入块可视模式。
- 在正常模式下,按
-
选择列:
- 使用方向键(
h
,j
,k
,l
)移动光标来选择需要复制的列区域。
- 使用方向键(
-
复制选择的列:
- 按
y
复制选中的列区域。
- 按
-
粘贴列:
- 将光标移动到要粘贴的位置。
- 按
p
将复制的列粘贴到光标后面,或按P
将列粘贴到光标前面。
示例
假设有以下文本:
12345
67890
abcde
fghij
复制第二和第三列
-
进入块可视模式:
- 将光标移动到
2
上。 - 按
Ctrl + v
进入块可视模式。
- 将光标移动到
-
选择第二和第三列:
- 使用方向键选择第二和第三列区域,使其高亮显示:
23 78 bc gh
- 使用方向键选择第二和第三列区域,使其高亮显示:
-
复制选择的列:
- 按
y
复制选中的列区域。
- 按
-
粘贴列:
- 将光标移动到要粘贴的位置(例如,第一行的末尾)。
- 按
p
粘贴复制的列,使其变为:1234523 6789078 abcdebc fghijgh
通过这种方式,可以轻松地在 Vim 中按列复制和粘贴文本。块可视模式对于处理列数据非常有用,特别是在编辑表格或代码时。
在 Vim 中,将复制的文本粘贴到下一行,可以通过以下步骤实现:
复制行并粘贴到下一行
-
复制当前行:
- 将光标放在要复制的行上。
- 按
yy
复制当前行。
-
粘贴到下一行:
- 按
p
将复制的行粘贴到当前行的下一行。
- 按
示例
假设你有以下文本:
Line 1
Line 2
Line 3
复制 “Line 2” 并粘贴到其下一行
- 将光标移动到 “Line 2” 行。
- 按
yy
复制 “Line 2” 行。 - 按
p
将复制的行粘贴到当前行的下一行。
操作结果将变为:
Line 1
Line 2
Line 2
Line 3
复制列并粘贴到下一行
如果你需要复制某一列并将其粘贴到下一行,可以使用块可视模式进行操作。
假设你有以下文本:
12345
67890
abcde
fghij
复制第二列并粘贴到下一行
-
进入块可视模式:
- 将光标移动到
2
上。 - 按
Ctrl + v
进入块可视模式。
- 将光标移动到
-
选择第二列:
- 使用方向键选择第二列区域,使其高亮显示:
2 7 b g
- 使用方向键选择第二列区域,使其高亮显示:
-
复制选择的列:
- 按
y
复制选中的列。
- 按
-
粘贴到下一行:
- 将光标移动到要粘贴的位置(例如第一行的末尾)。
- 按
p
粘贴复制的列,使其变为:123452 678907 abcdeb fghijg
通过这些操作,你可以在 Vim 中轻松地将复制的文本或列粘贴到下一行。
在 Vim 中,有多种方法可以跳转到某一行。以下是常用的方法:
使用行号跳转
-
跳转到指定行号:
- 在正常模式下,输入行号,然后按
G
(大写的 G)。例如,要跳转到第 10 行,输入10G
。
- 在正常模式下,输入行号,然后按
-
跳转到文件顶部:
- 按
gg
跳转到文件的第一行。
- 按
-
跳转到文件底部:
- 按
G
跳转到文件的最后一行。
- 按
进入命令模式跳转
- 使用命令模式跳转:
- 在正常模式下,按
:
进入命令模式。 - 输入行号,然后按
Enter
。例如,要跳转到第 20 行,输入:20
并按Enter
。
- 在正常模式下,按
使用标记跳转
-
标记当前位置:
- 在正常模式下,按
m
然后按一个字母来标记当前位置。例如,按ma
将当前位置标记为a
。
- 在正常模式下,按
-
跳转到标记位置:
- 按
'
(单引号)然后按标记的字母。例如,按'a
跳转到标记a
的位置。
- 按
示例操作
假设你有以下文本:
1: First line
2: Second line
3: Third line
...
10: Tenth line
...
20: Twentieth line
...
100: Hundredth line
跳转到第 20 行
- 在正常模式下,输入
20G
或:20
并按Enter
,光标将移动到第 20 行。
跳转到文件顶部和底部
- 按
gg
跳转到文件顶部(第一行)。 - 按
G
跳转到文件底部(最后一行)。
使用标记跳转
- 将光标移动到第 10 行,按
ma
将当前位置标记为a
。 - 无论光标移动到哪里,按
'a
都可以跳转回第 10 行。
通过这些方法,你可以快速跳转到 Vim 中的任何行,极大提高编辑效率。
在 Vim 中,小写的 v
和大写的 V
都用于进入可视模式(Visual Mode),但它们的行为有所不同:
-
小写的
v
(Visual Mode):- 小写的
v
进入字符可视模式(Character-wise Visual Mode),用于选择单个字符或一段字符。 - 使用方向键或
h
,j
,k
,l
移动光标,可以选择单个字符或连续的一段字符。 - 选中的文本会被高亮显示。
- 小写的
-
大写的
V
(Visual Line Mode):- 大写的
V
进入行可视模式(Line-wise Visual Mode),用于选择整行文本。 - 使用方向键或
j
,k
移动光标,可以选择多行文本。 - 选中的整行会被高亮显示。
- 大写的
示例
假设有以下文本:
This is line 1
This is line 2
This is line 3
This is line 4
使用小写的 v
选择字符
- 将光标放在
T
上,按v
进入字符可视模式。 - 使用方向键选择字符,例如选择 “This is line”:
This is line 1
使用大写的 V
选择行
- 将光标放在
T
上,按V
进入行可视模式。 - 使用方向键选择整行,例如选择第一行和第二行:
This is line 1 This is line 2
操作示例
-
复制选中的文本:
- 在字符可视模式或行可视模式下,按
y
复制选中的文本。
- 在字符可视模式或行可视模式下,按
-
删除选中的文本:
- 在字符可视模式或行可视模式下,按
d
删除选中的文本。
- 在字符可视模式或行可视模式下,按
-
粘贴复制的文本:
- 在正常模式下,按
p
将复制的文本粘贴到光标后面,或按P
将文本粘贴到光标前面。
- 在正常模式下,按
通过这两种可视模式,您可以根据需要选择字符级别或行级别的文本,进行复制、删除等操作,极大提高编辑效率。
在 Vim 中,d
和 x
都是删除操作,但它们的作用范围和使用方法有所不同:
x
操作
x
删除当前光标下的单个字符(类似于普通文本编辑器中的删除键)。X
(大写的X
)删除光标前的单个字符(类似于普通文本编辑器中的退格键)。
示例操作
假设有以下文本:
Hello, World!
使用 x
- 将光标放在
H
上,按x
,结果为:ello, World!
- 将光标放在
W
上,按x
,结果为:Hello, orld!
使用 X
- 将光标放在
e
上,按X
,结果为:Hllo, World!
- 将光标放在
,
上,按X
,结果为:Hello World!
d
操作
d
用于删除文本并将其放入剪贴板。d
需要与其他命令组合使用来指定删除范围。dw
删除从光标当前位置到下一个单词的开头。de
删除从光标当前位置到当前单词的结尾。dd
删除当前行。d$
删除从光标当前位置到行末。d0
删除从光标当前位置到行首。
示例操作
假设有以下文本:
Hello, World!
使用 dw
- 将光标放在
H
上,按dw
,结果为:, World!
- 将光标放在
W
上,按dw
,结果为:Hello, !
使用 de
- 将光标放在
H
上,按de
,结果为:, World!
- 将光标放在
o
上,按de
,结果为:Hell World!
使用 dd
- 将光标放在
H
上,按dd
,结果为删除整行:(整行被删除,光标移动到下一行)
使用 d$
- 将光标放在
H
上,按d$
,结果为:(整行被删除,因为从光标到行末是整行)
使用 d0
- 将光标放在
o
上,按d0
,结果为:o, World!
总结
x
删除当前光标下的单个字符。X
删除光标前的单个字符。d
用于删除指定范围的文本,通常与其他命令组合使用。
这些操作使得 Vim 在处理文本编辑任务时更加灵活和高效。
对于 Vim 中的自动命令,有时候需要进一步确保缓冲区操作的具体情况,以实现返回目录浏览界面的效果。你可以尝试以下几种改进的方法:
解决方案 1:确保使用 BufDelete
自动命令
确保在删除缓冲区后触发自动命令,以便重新打开目录浏览器:
" 当缓冲区被删除后自动进入目录浏览界面
autocmd BufDelete * if bufexists("#") == 0 | execute "Explore" | endif
解决方案 2:使用自定义命令关闭缓冲区并返回目录浏览界面
你可以定义一个自定义命令来关闭缓冲区并返回目录浏览界面:
" 定义一个命令来关闭缓冲区并返回目录浏览界面
command! Bd execute 'bdelete' | execute 'Explore'
使用这个命令代替 :bd
来关闭缓冲区:
:Bd
解决方案 3:调整 BufEnter
自动命令的条件
确保缓冲区的名称(文件名)为空时才触发自动命令:
" 当进入空缓冲区时自动进入目录浏览界面
autocmd BufEnter * if expand("%:p") == "" | execute "Explore" | endif
解决方案 4:使用 BufWinLeave
自动命令
当窗口离开缓冲区时触发自动命令:
" 当窗口离开缓冲区时自动进入目录浏览界面
autocmd BufWinLeave * if bufname('#') == "" | execute "Explore" | endif
综合使用
结合以上方法,选择最适合你的情况。以下是一个综合示例,你可以将其添加到你的 ~/.vimrc
文件中:
" 当缓冲区被删除后自动进入目录浏览界面
autocmd BufDelete * if bufexists("#") == 0 | execute "Explore" | endif
" 当进入空缓冲区时自动进入目录浏览界面
autocmd BufEnter * if expand("%:p") == "" | execute "Explore" | endif
" 当窗口离开缓冲区时自动进入目录浏览界面
autocmd BufWinLeave * if bufname('#') == "" | execute "Explore" | endif
" 定义一个命令来关闭缓冲区并返回目录浏览界面
command! Bd execute 'bdelete' | execute 'Explore'
使用自定义命令
在 Vim 中打开文件后,使用自定义命令 :Bd
来关闭缓冲区并返回目录浏览界面。
通过这些设置,你应该能够在关闭文件缓冲区后自动返回目录浏览界面。
在 Vim 中,如果你通过打开一个目录路径来浏览文件,并且希望在关闭文件后返回到目录列表而不是退出 Vim,可以通过以下步骤实现:
步骤
-
打开 Vim 并指定路径:
- 在终端中,打开 Vim 并指定一个目录路径。例如:
vim /path/to/directory
- 这会启动 Vim 并显示目录中的文件列表(使用
netrw
插件进行目录浏览)。
- 在终端中,打开 Vim 并指定一个目录路径。例如:
-
在 Vim 中打开文件:
- 在目录浏览界面中,使用光标移动到要打开的文件并按
Enter
键以打开文件。
- 在目录浏览界面中,使用光标移动到要打开的文件并按
-
编辑文件:
- 在打开的文件中进行编辑。
-
关闭文件并返回到目录列表:
- 使用
:Explore
命令重新进入目录浏览界面::Explore
- 或者使用
:Lexplore
命令在左侧打开目录浏览器::Lexplore
- 使用
示例操作
假设你在终端中执行:
vim /path/to/directory
打开 Vim 并显示目录中的文件
- Vim 会启动并显示目录中的文件列表(netrw 插件默认启动)。
打开文件
- 使用光标移动到要打开的文件并按
Enter
键:./file1.txt ./file2.txt ...
编辑文件
- 在文件中进行编辑。
关闭文件并返回目录列表
-
使用
:Explore
命令重新打开目录浏览器::Explore
- 这会关闭当前文件并返回到目录列表。
-
或者使用
:Lexplore
命令在左侧打开目录浏览器::Lexplore
自动返回目录浏览界面
你可以设置自动命令,使得在关闭文件时自动回到目录浏览界面。将以下内容添加到你的 ~/.vimrc
文件中:
" 当进入空缓冲区时自动进入目录浏览界面
autocmd BufEnter * if expand("%") == "" | execute "Explore" | endif
使用 bdelete
命令
-
打开 Vim 并指定路径:
- 在终端中,打开 Vim 并指定一个目录路径。例如:
vim /path/to/directory
- 在终端中,打开 Vim 并指定一个目录路径。例如:
-
在 Vim 中打开文件:
- 在目录浏览界面中,使用光标移动到要打开的文件并按
Enter
键以打开文件。
- 在目录浏览界面中,使用光标移动到要打开的文件并按
-
编辑文件:
- 在文件中进行编辑。
-
关闭文件并返回到目录列表:
- 使用
:bdelete
命令关闭当前文件缓冲区::bdelete :Explore
- 或者将其简化为:
:bd :Ex
- 使用
通过这些步骤,你可以在 Vim 中关闭文件后返回到目录浏览界面,而不是退出 Vim。
在使用vim时,我们可能有这样的需求,在文件的某一列或几列加上统一的字符,比如写shell脚本时,需要注释掉某段程序,或者删除某一列或几列上的字符,比如删除之前添加的注释符。手工一个个整肯定是要把人整疯的,还好vim本身有支持列编辑。下面介绍一下如何实现一列的添加和删除。
添加一列:
1)vim 打开文件,并移动光标到要添加列的起始行
2)按下ctrl+v,打开visual模式
3)通过光标向下选中你要添加内容的位置
4)按下I(即shift+i)键,然后输入你要插入的内容
5)按下ESC键,大概1s后,你就能看到内容加上了
删除一列:
1)vim打开文件,并移动光标到要删除列所在的启示位置
2)按下ctrl+v,进入visual模式
3)通过移动光标,选中你要删除的区域
4)按下d键完成删除
同理,如果你要在一个区域内添加或者删除内容,只需要在上面的第3步选择你要操作的区域即可。
本站资源均来自互联网,仅供研究学习,禁止违法使用和商用,产生法律纠纷本站概不负责!如果侵犯了您的权益请与我们联系!
转载请注明出处: 免费源码网-免费的源码资源网站 » vim常用技巧
发表评论 取消回复