首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在vim中使用Shift-o进行奇怪的缩进

在vim中,使用Shift-o进行奇怪的缩进是因为Shift-o命令会在当前行的上方插入一个新行,并将光标移动到新行的开头位置。这个命令通常用于在代码中插入新的缩进级别。

在vim中,缩进是通过设置tabstop、shiftwidth和expandtab等选项来控制的。tabstop选项定义了一个制表符的宽度,shiftwidth选项定义了自动缩进时的缩进宽度,expandtab选项决定是否将制表符转换为空格。

当你在vim中使用Shift-o进行缩进时,它会根据当前行的缩进级别来确定新行的缩进级别。如果当前行是以制表符开头的,新行将以相同的缩进级别开始;如果当前行是以空格开头的,新行将以相同数量的空格开始。

这种奇怪的缩进可能是由于你在编辑的文件中使用了不一致的缩进方式,导致新行的缩进级别与周围的代码不一致。为了解决这个问题,你可以使用vim的自动缩进功能来统一缩进方式。

要启用vim的自动缩进功能,可以在.vimrc文件中添加以下行:

代码语言:txt
复制
set autoindent
set smartindent

这样,当你在插入新行时,vim会根据周围代码的缩进级别自动调整新行的缩进。如果你想要更精确地控制缩进方式,可以使用shiftwidth和tabstop选项来设置缩进宽度和制表符宽度。

总结起来,使用Shift-o进行奇怪的缩进可能是因为文件中使用了不一致的缩进方式,可以通过启用vim的自动缩进功能来解决这个问题。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

jupyter notebook 快捷键

•Enter : 转入编辑模式 •Shift-Enter : 运行本单元,选中下个单元 •Ctrl-Enter : 运行本单元 •Alt-Enter : 运行本单元,在其下插入新单元 •Y : 单元转入代码状态 •M :单元转入markdown状态 •R : 单元转入raw状态 •1 : 设定 1 级标题 •2 : 设定 2 级标题 •3 : 设定 3 级标题 •4 : 设定 4 级标题 •5 : 设定 5 级标题 •6 : 设定 6 级标题 •Up : 选中上方单元 •K : 选中上方单元 •Down : 选中下方单元 •J : 选中下方单元 •Shift-K : 扩大选中上方单元 •Shift-J : 扩大选中下方单元 •A : 在上方插入新单元 •B : 在下方插入新单元 •X : 剪切选中的单元 •C : 复制选中的单元 •Shift-V : 粘贴到上方单元 •V : 粘贴到下方单元 •Z : 恢复删除的最后一个单元 •D,D : 删除选中的单元 •Shift-M : 合并选中的单元 •Ctrl-S : 文件存盘 •S : 文件存盘 •L : 转换行号 •O : 转换输出 •Shift-O : 转换输出滚动 •Esc : 关闭页面 •Q : 关闭页面 •H : 显示快捷键帮助 •I,I : 中断Notebook内核 •0,0 : 重启Notebook内核 •Shift : 忽略 •Shift-Space : 向上滚动 •Space : 向下滚动

03

Jupyter Notebook的使用

Enter : 转入编辑模式 Shift-Enter : 运行本单元,选中下个单元 Ctrl-Enter : 运行本单元 Alt-Enter : 运行本单元,在其下插入新单元 Y : 单元转入代码状态 M :单元转入markdown状态 R : 单元转入raw状态 1 : 设定 1 级标题 2 : 设定 2 级标题 3 : 设定 3 级标题 4 : 设定 4 级标题 5 : 设定 5 级标题 6 : 设定 6 级标题 Up : 选中上方单元 K : 选中上方单元 Down : 选中下方单元 J : 选中下方单元 Shift-K : 扩大选中上方单元 Shift-J : 扩大选中下方单元 A : 在上方插入新单元 B : 在下方插入新单元 X : 剪切选中的单元 C : 复制选中的单元 Shift-V : 粘贴到上方单元 V : 粘贴到下方单元 Z : 恢复删除的最后一个单元 D,D : 删除选中的单元 Shift-M : 合并选中的单元 Ctrl-S : 文件存盘 S : 文件存盘 L : 转换行号 O : 转换输出 Shift-O : 转换输出滚动 Esc : 关闭页面 Q : 关闭页面 H : 显示快捷键帮助 I,I : 中断Notebook内核 0,0 : 重启Notebook内核 Shift : 忽略 Shift-Space : 向上滚动 Space : 向下滚动 编辑模式 ( Enter 键启动) Tab : 代码补全或缩进 Shift-Tab : 提示 Ctrl-] : 缩进 Ctrl-[ : 解除缩进 Ctrl-A : 全选 Ctrl-Z : 复原 Ctrl-Shift-Z : 再做 Ctrl-Y : 再做 Ctrl-Home : 跳到单元开头 Ctrl-Up : 跳到单元开头 Ctrl-End : 跳到单元末尾 Ctrl-Down : 跳到单元末尾 Ctrl-Left : 跳到左边一个字首 Ctrl-Right : 跳到右边一个字首 Ctrl-Backspace : 删除前面一个字 Ctrl-Delete : 删除后面一个字 Esc : 进入命令模式 Ctrl-M : 进入命令模式 Shift-Enter : 运行本单元,选中下一单元 Ctrl-Enter : 运行本单元 Alt-Enter : 运行本单元,在下面插入一单元 Ctrl-Shift-- : 分割单元 Ctrl-Shift-Subtract : 分割单元 Ctrl-S : 文件存盘 Shift : 忽略 Up : 光标上移或转入上一单元 Down :光标下移或转入下一单元

03

IDEA Intellij小技巧和插件

使用IDEA Intellij已有两年,在此罗列一下在实践中觉得能有效提升开发效率的一些小技巧和插件。  1. 重设移动键 方向键和Home/End键离基键太远,经常把手移过去其实很费时。所以建议重设到主键盘上。考虑到后面会提到的IdeaVim插件,所以最好使用类似Vim的方案。我个人的设定是:  Ctrl+H  ←  Ctrl+J  ↓  Ctrl+K  ↑  Ctrl+L  →  Ctrl+A  End (Vim中Shift+A是在行尾插入)  Ctrl+I  Home (Vim中Shift+I是在行首插入)  被冲掉的原本的快捷键可以设到Alt上(最常用的Ctrl+A全选和Ctrl+J Live Template)。当然你也可以把移动键设在Alt上,不过使用标准键盘时,左Ctrl可以用手掌来按(使用emacs的必备技能),非常方便。所以我个人喜欢把常用操作设到Ctrl上。  2. 好用的Select Word at Caret快捷键 在IDEA的Keymap中有Select Word at Caret这个动作,字面意思是“选中光标所在的单词”,默认快捷键是Ctrl+W。但事实上,这个动作的实际操作是选中更上一层的语法结构。例如,如果你在一个字符串的一个单词中,按一下Ctrl+W,会选中光标所在单词。再按一下,会选中整个字符串的内容,不包括引号。再按一下,会选中包括引号的字符串。再按一下,会选中整个表达式(如果表达式含有括号,会逐层选中)。再按一下,会选中整个语句块。再按一下,会选中整个方法。再按一下,会选中整个类。  3. Ace Jump插件 可以说Ace Jump和IdeaVim这两个插件是我使用了Intellij后再也不想用eclipse的最主要原因。Ace Jump是一种从emacs上借鉴过来的快速光标跳转方式,操作方式是:你用某个快捷键进入Ace Jump模式后,再按任一个键,当前屏幕中所有该字符都被打上一个字母标记,你只要按这个字母,光标就会跳转到这个字符上。这种跳转方式非常实用,你根本不用管当前光标在什么位置,眼睛只需要盯着需要跳转到的位置,最多三四下按键就能准确把光标定位,开始编辑。按道理这种功能非常容易实现,但偏偏到目前为止我没有在eclipse上找到类似插件。  安装与使用:  在Intellij的Setting -> Plugins -> Browse repositories中查找acejump,可以找到两个插件,AceJump和emacsIDEAs。AceJump是最纯正的Ace Jump插件,功能单一,也比较稳定,但我个人感觉没有emacsIDEAs好用。两者最大的差异是,Ace Jump是先按键调出跳转标记,再通过不同功能键(Ctrl,Shift,Alt等)配合书签按键追加额外功能(例如从当前位置选中文本至书签位置)。而emacsIDEAs是使用不同的快捷键进入不同的功能模式(例如跳转到字符,跳转到单词,选中到标签等)同时调出书签标记,然后再按书签按钮实现跳转。感觉emacsIDEAs的方式比较符合我的思维习惯。  如果选择了AceJump插件,重启Intellij后即可使用,默认快捷键是Ctrl+;(分号)。但我习惯将它重设到Alt+K。下面是使用AceJump的效果

01

linux之vi,vim命令

表示当前行的下一行的行尾b按照单词向前移动 字首e按照单词向后移动 字尾w按照单词向后移至次一个字首H移动到屏幕最上 非空白字M移动到屏幕中央 非空白字L移动到屏幕最下 非空白字G移动到文档最后一行gg移动到文档第一行v进入光标模式,配合移动键选中多行Ctrl+f向下翻页Ctrl+b向上翻页u撤销上一次操作``回到上次编辑的位置dw删除这个单词后面的内容dd删除光标当前行dG删除光标后的全部文字d$删除本行光标后面的内容d0删除本行光标前面的内容y复制当前行,会复制换行符yy复制当前行的内容yyp复制当前行到下一行,此复制不会放到剪切板中nyy复制当前开始的 n 行p,P,.粘贴ddp当前行和下一行互换位置J合并行Ctrl+r重复上一次动作Ctrl+z暂停并退出ZZ保存离开xp交换字符后面的交换到前面~更换当前光标位置的大小写,并光标移动到本行右一个位置,直到无法移动

02

这可能是最全最实用的Vim操作集合

Vim 作为已经 29 岁(1991.11.2)的老牌文本编辑器,比“名名”年龄还大,在2019年 StackOverflow 的统计数据中仍然排在了总榜第五名,占据了25.4%的“市场”。Vim 不同于其他编辑器或者 IDE,它被称作“编辑器之神”,它小巧、启动极快、可运行在任何主流系统上、各种快捷操作、所有 Unix 或类 Unix 系统都预装了 Vi 或 Vim,而且很多编辑器、IDE 都提供 Vim 插件,学会了 Vim 可以一套快捷键走遍天下,而且可以和其他编辑器实现优势互补,编辑用 Vim,项目结构、文件结构、长得好看等用其他编辑器。Vim 学习一开始较难,一旦上手,就如神兵利器解封,助你在文本编辑披荆斩棘。

02
领券