备忘vim编辑器

经常需要在linux环境下进行开发,不可避免的要使用vim。为了方便每次查阅与温习,在这篇博客里记录一些常用功能操作与我熟悉的一些基本配置。

vim

vim本身就是一个编辑器,就像是windows的text一样,但是这个编辑器有很多的命令与快捷操作方式可以大大的节省我们开发编辑的时间。

基本命令

  • 一般命令模式下的普通命令
    • dd : 剪切光标所在的那一整行到剪切板,会覆盖原先剪切板内容
    • yy : 复制光标所在的那一整行到剪切板,会覆盖原先剪切板内容
    • p : 将剪切板的内容粘贴到光标下一行,并将光标移到下一行
    • P : 将剪切板的内容粘贴到光标上一行,并将光标移到被粘贴的那一行
    • u : 撤销上一次操作(可以是上一次编辑模式下的改变,也可以是上一次命令操作的改变)
    • [Ctrl]+r : 重复做一遍上一个动作
    • G : 光标跳转到最后一行
    • gg : 光标跳转到第一行
    • i : 进入编辑模式,光标位置不变
    • o : 进入编辑模式,并且在下一行插入一个空白行,再将光标移到下一行
  • 一般命令模式下的命令行操作
    • :w : 保存现在对文件的修改
    • :w filename : 将现在的文件另存为filename
    • :q : 退出vim
    • :! : 强制操作,一般感叹号放在操作后面
    • :10 : 光标跳转到第10行
    • /word : 从光标处往下寻找word这个字符串
    • ?word : 从光标处往上寻找word这个字符串
    • :100,200s/word1/word2/g : 在100行与200行之间寻找word1这个字符串,并将字符串取代为word2
    • :100,200s/word1/word2/gc : 在100行与200行之间寻找word1这个字符串,并将字符串取代为word2,并且在取代前显示提示字符给使用者确认是否要执行操作
  • 编辑模式:
    • [Ctrl]+p : 按照上文中出现的字符串进行补全
    • esc: 退出编辑模式,进入一般命令模式

区块选择

一共有三种区块选择方式,都是在一般命令模式下进行操作

多文件编辑1

通过vim file1 file2打开两个文件,并且在其中一个文件拷贝到粘贴板上的文本可以在另一个文件中使用。

多文件编辑2

上面那种方式我用起来感觉不是很舒服,也不是很会用,这第二种方法用起来感觉比较好

  • 通过tabedit file2打开第二个文件

  • 通过tabn切换到下一个文件

  • 通过tabp切换到上一个文件

  • 这种模式下多文件间剪切板是共用的

多窗口编辑

这种模式下会将一个窗口划分为多个窗口,在文件比较长需要前后对应时可以使用。使用方式下面讲的很详细。

我的vim常用设置

/etc/vim/vimrc(个人账户的设置是~/.vimrc配置文件,默认不存在,需要自己手动创建)中,我们可以对vim这个编辑器进行一些常用的设置。

1
2
3
4
5
6
7
8
set showmatch       " Show matching brackets.
set hlsearch " heighlight the search result
set incsearch " auto jump to search result
set autoread " auto check the file whether be changed by other editor
set cursorline " heighlight the cursorline
set number
set ts=4 " set one tab = 4 blank length
set expandtab " if new editor's tab's length is not equal,convert the tab to blank

常见问题

  • 有时我们在编辑文件后没有保存就因为各种原因强制退出了,这时会在当前目录下生成一个缓存文件,这个缓存文件不手动删除会一直存在

  • 编码问题

    • linux系统默认支持的语系数据:这与/etc/locale.conf有关
    • 终端接口(bash)的语系:与LANGLC_ALL几个环境变量有关
    • 文件的编码方式
    • 打开文件的软件的接口的编码方式

参考资料

  • [1] 《鸟哥的linux私房菜》;

备忘vim编辑器
http://line.com/2019/03/30/2019-03-30-vim/
作者
Line
发布于
2019年3月30日
许可协议