【linux-Day7】Vim的使用和简单配置
【linux_Day7】Linux编辑器-Vim的使用和简单配置
- Vim多模式
- 进入vim
- 多模式之间进行切换
- (保存)退出vim
- vim常用操作总结
- 命令模式:快速编辑
- 从命令模式进入插入模式的三种方法
- 从命令模式进入底行模式
- 移动光标
- 复制、删除(剪切)、粘贴
- 撤销
- 替换
- 从命令模式切换到替换模式进行覆盖写入
- 翻页
- 从命令模式切换到视图模式进行批量化代码补充/删除
- 查询代码
- 底行模式常用操作总结
- 配置vim:修改配置文件
- 配置vim:使用插件(基于Ubuntu系统)
在linux中,写代码可以用vim,编代码可以用gcc/g++,调代码可以用gdb,自动化构建项目可以用make/makefile。
我们在电脑上安装的vscode,idea等,这些都是集成开发环境,它们本质上就是由写代码工具,编代码工具,调代码工具等等构成的一个"壳子"。
本篇的主人公是vim。
vim以一款Linux自带的,多模式的编辑器软件。
它在系统中的默认路径如下:
我们可以在vim中写东西。
vim打开后不支持鼠标操作,所以关于vim的操作 ,全是在键盘上:
vim是基于下面这样的键盘被创造的,所以输入数字的时候最好 从键盘的如下位置输入。
vim操作区分大小写。
Vim多模式
vim是多模式编辑器,在不同模式下,用户执行不同的操作。通过组合不同的模式可以完成复杂的编辑任务。
本篇主要总结了命令模式、插入模式、末行模式的常用操作。
- 正常/普通/命令模式(Normal mode):
控制屏幕光标的移动;字符、字或行的删除;移动复制某区段;进入Insert mode下或者到 last line mode。 - 插入模式(Insert mode):
只有在Insert mode下,才可以做文字输入,按「ESC」键可回到命令行模式。 - 末行模式(last line mode):
文件保存或退出;也可以进行文件替换,找字符串,列出行号等操作。在底行模式下直接输入help vim-modes
,可以查看到本机vim的所有模式。
进入vim
vim 文件1
:用vim打开文件1。
注意:如果文件1不存在,用vim打开文件1,后面保存退出vim后,文件1会被自动创建。
vim 文件1 +n
:用vim打开文件1,并且光标落在文件1的第n行。
多模式之间进行切换
vim的默认模式是命令模式,一进入vim默认就是命令模式。
在命令模式下,输入i或a或o,从命令模式切换到插入模式(i、a、o区别在后面)。
不能从插入模式直接退出vim,也不能从插入模式直接切换到其他模式下,
-
如果想退出vim,
- 先摁Esc键从插入模式回退到命令模式,在命令模式下输入退出指令退出vim;
- 在命令模式下输入
:
进入底行模式,然后在底行模式输入退出命令退出vim。
-
如果想从插入模式切换到其他模式,先摁Esc键回退到命令模式,然后从命令模式进入其他模式。
同理,
除命令模式的其他模式之间进行切换时,最好先Esc回退到命令模式,再从命令模式进入。
摁Esc键,从当前模式回到命令模式。
(保存)退出vim
- 在命令模式下:shift+zz=ZZ:保存并退出
- 在底行模式下:
输入w
:保存
输入q
:退出(未修改内容)
输入q!
:退出(不保存强制退出)
输入wq
:保存并退出
vim常用操作总结
命令模式:快速编辑
在命令模式下,能控制屏幕光标的移动;字符、字或行的删除;移动复制某区段;进入Insert mode下或者到 last line mode。
从命令模式进入插入模式的三种方法
i
:直接切换,光标位置不变
a
:切换到插入模式后,光标后移一位
o
:切换到插入模式后,光标下移一行,并新起一行
从命令模式进入底行模式
:
(相当于shift+;):从命令模式进入底行模式
移动光标
gg
:快速回到第一行
shift+g
(相当于G):快速把光标定位到最后一行
n+G
:定位到第n行
shift+4/$
(相当于$):光标定位到该行最后一个字符
shift+^/6
( 相当于 ^):光标定位到该行第一个字符
h j k l
也能左下上右移动光标(vim是在键盘上还没有上下左右键的时候诞生的)
上下左右键
也能上下左右移动光标
上下左右移动光标的命令前面都可以带数字。表示上/下移n行,左/右移动n个字符。
w
:以单词为单位向右移动
b
:以单词为单位向左移动
w和b命令前面也能带数字。
复制、删除(剪切)、粘贴
对光标所在行yy
:复制光标所在行
对光标所在行 n+yy
:复制所在行以及后面的行,共n行
p
:把复制的内容粘贴到光标下一行
n+p
:把复制的内容粘贴n次
dd
:先复制再删除光标所在行
n+dd
:从光标所在行开始删除,共n行
yy+p是先复制再粘贴
dd+p是先剪切在粘贴
yy dd p都是以行为单位。
x
:在行内,删除光标所在字符,该行字符串左移/前移
n+x
:删除光标所在字符串以及后面的字符串,共n个。
X
(相当于shift+x):在行内,删除光标所在字符的前一个字符,该行字符串左移/前移
n+X
:删除光标所在字符串前面的n的字符。
撤销
u
:撤销历史操作
ctrl+r
:撤销u操作
一旦退出vim,就无法进行撤销了,但如果只是保存,没有通过q退出,可以撤销。
替换
r+A
:把光标所在字符替换成A
n+r+A
:把光标所在字符以及后面的(n-1)个字符都替换成A
从命令模式切换到替换模式进行覆盖写入
R
(shift+r):从命令模式切换到替换模式REPLACE,按Esc键退出替换模式回到命令模式。
在替换模式下可以进行覆盖写入:
shift+~
:把光标所在字符大写变小写,或者小写变大写
长按shift+~
:把光标所在字符大写变小写,或者小写变大写,直到当前行结束。
翻页
按「ctrl」+「b」:向前翻动一页
按「ctrl」+「f」:向后翻动一页
按「ctrl」+「u」:向前翻动半页
按「ctrl」+「d」:向后翻动半页
长按 ,持续翻页
从命令模式切换到视图模式进行批量化代码补充/删除
ctrl+v
:从命令模式进入视图模式V-BLOCK,按Esc键退出替换模式回到命令模式。
在试图模式下,可以进行批量代码的补充或删除。
下面以注释/去注释代码为例:
-
在视图模式下,以光标所在位置为基点,通过移动光标选择行后,shift+i进入插入模式,输入//后,摁Esc,就完成了对选中区域的注释且回到命令模式。
-
进入视图模式前将光标处于文件首行首字符,进入视图模式, shift+g,选中全部行,shift+i进入插入模式,输入//后摁Esc,就完成了对全文的注释且回到命令模式。
其中,n+G成立。
-
批量化去注释:
在试图模式下,以光标所在位置为基点 ,移动光标 选中文件中的//,摁住d,就把选中的//删除了并且自动回到了命令模式。
查询代码
对代码进行增删改已经可以了,如何查询代码?
#
(shift+3/#):查询到光标所在的单词,在全文中出现的所有位置。然后摁n,光标从下往上开始遍历。
底行模式常用操作总结
在命令模式下输入:
,进入底行模式,可进行文件保存或退出;也可以进行文件替换,找字符串,列出行号等操作。
在底行模式下进行文件保存/退出不再赘述。
set nonu
:取消行号
输入set nu或者set number命令:显示行号。
此时取消/显示行号都是临时的,退出vim就失效了。
!指令
:在vim底行模式下输入!指令
,可以在不退出vim的情况下执行linux指令。
例如:
!sl:
%s/zzz/xxx/
:批量替换,用xxx替换文中所有zzz。
vs 文件1
:在不退出当前vim的情况下,使用vim打开文件1—>vim的分屏操作。
vim分屏之间如何进行光标切换:摁住ctrl,摁两下w
。
在底行模式下也可以搜索:
/xxx
:在全文搜索xxx,摁n从上向下遍历文中的xxx
vim常见操作总结完毕!
配置vim:修改配置文件
vim默认无配置时,就是一个普通的编辑器,没有首行缩进,语法高亮,显示行号等等。上面也提到过在底行模式下设置行号,但却只能临时设置。
通过配置vim可以让我们使用vim时得到更好的体验。配置vim–>修改配置文件的内容。
.vimrc是vim的配置文件。.vimrc在系统中有两个位置,分别是用户的家目录和系统目录/etc/下。
linux用户打开vim的时候,
系统会先去该用户的家目录中找.vimrc隐藏文件,如果存在,系统会先根据.vimrc对vim进行配置,然后再打开vim;
如果没找到,再继续去系统目录/etc/下找有没有.vimrc隐藏文件,如果存在,系统会先根据.vimrc对vim进行配置,然后再打开vim。
如果Linux系统目录/etc/下存在.vimrc隐藏文件,那么家目录下没有配置文件的用户,和root用户共用一份配置文件。
如果系统路径下也没找到配置文件,就打开无配置的vim。
如何配置当前用户的vim:
该用户的家目录中如果有.vimrc隐藏文件,打开配置文件修改配置项即可。
如果没有,先在该用户的家目录下创建.vimrc隐藏文件,然后再打开配置文件修改配置项即可。
配置文件中的行注释是 在行开头使用双引号"
常见的配置项:
这个是我从网上找的哈,自己也一直在用,直接复制粘贴到用户家目录下的.vimrc文件中保存,该用户的vim配置即可生效:
syntax on " Set syntax highlighting
set number " Set the line number
set tabstop=4 " Set an indent to account for 4 spaces
set autoindent " Set up automatic indentation
set mouse=a " Set mouse is always available, set mouse= (empty) cancel
set cc=80 " Column 80 highlighted, set cc=0 cancellation
set cursorline " Settings to highlight the current row
set cindent " Format C language
set st=4 " Set the width of the soft tab to 4 spaces
set shiftwidth=4 " The width automatically indented when setting a new line is 4 spaces
set sts=4 " Set the number of spaces inserted when the Tab key is pressed in insertion mode to 4
set ruler " Show the status of the last line
set showmode " The status of this row is displayed in the lower left corner.
set bg=dark " Show different background tones
set hlsearch " Enable Search Highlight
set laststatus=2 " Always display the status bar
syntax on :打开语法高亮,使 Vim 在编辑文件时能够根据文件类型高亮显示不同的语法元素,便于阅读和理解。
set number :显示行号,将每一行的行号显示在编辑区的左侧,方便定位代码行。
set tabstop=4 :设置 Tab 键的宽度为 4 个空格。这意味着当文档中出现制表符时,它将被视作 4 个空格宽。
set autoindent : 开启自动缩进功能,让新的行与前一行的缩进保持一致。
set mouse=a:设置鼠标模式,使鼠标始终可用。这使得用户可以在正常、可视和插入模式下通过鼠标进行选择、滚动等操作。如果设置为set mouse=则取消此功能。
set cc=80:在第 80 列高亮显示,用于指示代码的长度是否超过了规定的长度限制。这有助于遵循代码可读性的最佳实践。设置set cc=0可以取消此高亮。
set cursorline : 高亮显示当前光标所在的行,便于跟踪当前位置。
set cindent : 针对 C 语言代码启用自动缩进功能。这会影响大括号、关键字后的自动缩进行为。
set st=4 :设置软制表符(softtabstop)宽度为4个空格。这意味着当按下 Tab 键时,即使实际写入的是制表符,其效果也会表现为 4 个空格。
set shiftwidth=4 :设置自动缩进时的宽度为 4 个空格。使用命令 gg=G 时,自动缩进为 4 个空格。
set sts=4 :设置在插入模式下按下 Tab 键时插入的空格数为 4 个。这通常与tabstop和shiftwidth设置保持一致,以维持代码的一致性。
set ruler: 显示光标当前位置的行号和列号。
set showmode: 显示当前Vim的工作模式(如 Normal、Insert 等)在屏幕的左下角,帮助用户了解当前的操作环境。
set bg=dark : 设置编辑器的背景色为深色,以适应暗色主题。
set hlsearch: 启用搜索高亮功能,使得进行搜索时匹配的文本被高亮显示。
set laststatus=2 : 总是显示状态栏。确保状态栏在任何时候都可见,提供有关文件名、模式和编码等信息。
配置vim:使用插件(基于Ubuntu系统)
通过修改配置文件只能进行简单vim配置,要想vim有像VSCode中代码编辑器那样的效果,只能选择在系统上安装插件。
使用插件配置vim,有机会的话另出一篇吧~