我在 emacs 中选择了一个 python 代码区域。将其中的每一行缩进和取消缩进 4 个空格的最有效方法是什么?
理想情况下,我想要一些不是上下文敏感的东西(例如,它允许我在缩进与 python 语法无关的文档字符串中缩进段落)。
我的模式行显示(Python). 在网上搜索我发现有很多关于使用python-mode而不是的讨论python,但我几天前才开始使用 emacs,所以我很担心在我有机会理解它们之前更改默认值。如果更改为python-mode最佳选择,我很乐意接受它作为答案。
我尝试过的(来自手册):
<TAB> 没有效果C-M-\ 没有效果C-x <TAB> (indent-rigidly) 将每一行缩进一列(并取消选择区域)M-i 将第一行缩进一个制表符(长度为 8 个空格)C-M-q - “CMq 未定义”我发现的唯一方法是使用 regex-replace,但对于这样一个简单的任务,击键次数非常多。
Sublime 2 中是否有自动缩进选项?
在 Visual Studio 中,我可以按 Ctrl+K+D 来缩进所有内容,以便代码结构良好。Sublime 2 中有没有捷径可以做同样的事情?
我正在寻找一个 Emacs 包或配置,它可以用垂直线标记缩进,就像下面 Sublime Text 的屏幕截图中显示的那样:

奇怪的是谷歌没有给出这个问题的答案:
我正在使用 Visual Studio 1.56.0(用户设置),并且希望配置编辑器以在按 Tab 键时输入适当数量的空格,而不是插入物理制表符。
我发现了一些关于这个主题的讨论,我发现的建议包括使用以下之一:
工具->选项->文本编辑器->所有语言->选项卡
首选项 -> 源代码 -> 代码格式
编辑->高级->设置缩进->空格
这些解决方案都不起作用,因为
我没有看到名为“工具”的菜单(我只有文件、编辑、选择、查看、执行、运行、终端和帮助)
我在“文件”菜单下有一个“首选项”项目,但这又没有一个名为“源代码”的条目。
“编辑”菜单下没有“高级”项。
(对我来说)找到此类选项的逻辑位置是文件/首选项/文本编辑器/格式,但该部分中没有制表符 - >空格选项。
更新,基于 harrymc 给出的答案:
我知道 Visual Studio Code(我使用的)是与 Visual Studio 不同的文本编辑器。
有趣的是,指向“用户和工作空间设置”的链接显示的屏幕截图看起来与我的 Visual Studio 代码显示的不同:在网站中,“设置”应可用于“用户”或“工作空间”(该名称中有两个选项卡可见)那边的屏幕截图),而在我的编辑器中,“设置”页面仅显示“用户”。但是我不认为这与我的问题有关,因为当我在这些用户设置中选择“常用”并向下滚动时,我确实看到一个名为Editor: Insert Spaces的配置项及其描述
按 Tab 时插入空格
这应该正是我正在寻找的选择。但是,它确实设置了复选标记,但我的文件仍然有制表符。
我注意到在这个设置旁边我们可以找到注释:当“编辑器:检测缩进”打开时,此设置将根据文件内容被覆盖。事实上,“检测缩进”也有一个复选标记,我取消了它。
我以为这应该解决问题,但事实并非如此。重复一遍:我知道有
Detect Indentation: unchecked
Insert Spaces: checked
Run Code Online (Sandbox Code Playgroud)
我现在创建了一个新文件并键入了一个制表符和一些其他字符,然后保存了该文件。我可以看到新文件中还有一个物理选项卡。
我偶尔会意识到我需要在编码时删除一级缩进(例如将代码移出循环)。问题是我最终得到了一堆比我想要的缩进更多的行,按照我想要的方式缩进的唯一方法是手动删除所有制表符空间。
有没有办法自动执行此操作?我使用各种文本编辑器,例如 Geany、N++、gedit 和 Code::Blocks,所以我想要一个多程序解决方案。
我有一个混合使用空格和制表符的大型 shell 脚本。我想根据语法重新缩进整个文件,比如 Eclipse 的格式。有没有程序(美化?)可以做到这一点?
我很难弄清楚所有东西都挤在一起的逻辑,例如
if [ "$CANCELLATION" ]
then
while test $num -gt 0
do
if [ "$cjb" -gt 0 ]
Run Code Online (Sandbox Code Playgroud)
学习了如何在 Vim 中调用函数,但这不起作用。
Emacs - 丢失了所有换行符
每当我从另一个应用程序复制某些内容然后将其粘贴到 vim 中时,它都会弄乱缩进。
例如,刚才我尝试从 hello-world 教程中复制 manifest.json 文件以创建 chrome 扩展。
它看起来像这样:
{
"manifest_version": 2,
"name": "One-click Kittens",
"description": "This extension demonstrates a browser action with kittens.",
"version": "1.0",
"permissions": [
"https://secure.flickr.com/"
],
"browser_action": {
"default_icon": "icon.png",
"default_popup": "popup.html"
}
}
Run Code Online (Sandbox Code Playgroud)
但是,当我将它粘贴到 vim 中时,它看起来像这样:

我的vimrc如下:
"se t_Co=256
syntax enable
set nowrap
set mouse=a
set tabstop=4
set softtabstop=4
set shiftwidth=4
set expandtab
set number
set showcmd
set cursorline
set showmatch
execute pathogen#infect()
"filetype plugin indent on
"folding settings
set foldmethod=indent "fold based …Run Code Online (Sandbox Code Playgroud) 我目前正在处理包含具有一长串属性的元素的 XML 文件。当我尝试xmllint --format myfile.xml仅使用缩进的元素重新缩进整个 XML 文件时,属性仍然保留在一行中。
是否有一些(命令行、Windows 或 GNU/Linux)程序支持重新格式化 XML,包括属性?
例如像这样的 XML:
<root>
<node attribute1="some long attribute value" attribute2="some long attribute value" attribute3="..."/>
</root>
Run Code Online (Sandbox Code Playgroud)
应该输出类似于:
<root>
<node attribute1="some long attribute value"
attribute2="some long attribute value"
attribute3="..."/>
</root>
Run Code Online (Sandbox Code Playgroud) 我需要在大量具有许多函数定义的Python文件中替换所有出现的
def some_func(foo, bar):
Run Code Online (Sandbox Code Playgroud)
和
@jit(parallel=True)
def some_func(foo, bar):
Run Code Online (Sandbox Code Playgroud)
无论缩进程度如何def some_func(foo, bar)。
示例:我想更换
def some_func_1(foo, bar):
def some_func_2(foo, bar):
def some_func_3(foo, bar):
def some_func_4(foo, bar):
Run Code Online (Sandbox Code Playgroud)
和
@jit(parallel=True)
def some_func_1(foo, bar):
@jit(parallel=True)
def some_func_2(foo, bar):
@jit(parallel=True)
def some_func_3(foo, bar):
@jit(parallel=True)
def some_func_4(foo, bar):
Run Code Online (Sandbox Code Playgroud)
动机:我想“强力加速/并行化”FDTD 模拟包,而不必通过利用 的自动并行化来重写整个numba代码库@jit。
PS.:也欢迎对这种(ab)使用的幼稚方法提出任何评论/批评@jit(例如,如果这根本不起作用)!
我正在寻找一种使用 Adobe Brackets自动缩进我的html代码的方法。
目前,当我选择了整个代码(Ctrl+ A),并使用使用内置的缩进选项Ctrl+ ],
整个文本向前移动一个选项卡。我正在寻找的是正确自动缩进代码,例如JSFiddle的Tidy Up选项的工作方式。
或者换句话说,我想要以下内容:
<html>
<head>
</head>
<body>
<div>
<span>
</span>
</div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
成为:
<html>
<head>
</head>
<body>
<div>
<span>
</span>
</div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
而不是简单地向前移动标签距离,例如:
<html>
<head>
</head>
<body>
<div>
<span>
</span>
</div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
我试过搜索并阅读首选项,但找不到办法做到这一点。有任何想法吗..?
indentation ×10
autoindent ×2
emacs ×2
indent ×2
tabs ×2
brackets ×1
c++ ×1
clipboard ×1
command-line ×1
geany ×1
html ×1
linux ×1
notepad++ ×1
packages ×1
python ×1
regex ×1
text-editing ×1
vim ×1
vimrc ×1
xml ×1