小编Rom*_*sky的帖子

如何在Vim中模拟Emacs的转置词?

Emacs有一个有用的transpose-words命令,可以让光标前面的单词与光标后的单词交换,保留标点符号.

例如,' stack |overflow'+ Mt =' overflow stack|'(' |'是光标位置).

<a>|<p>成为<p><a|>.

是否有可能在Vim中模仿它?我知道我可以使用dwwP,但它不适用于标点符号.

更新:不,dwwP真的没办法了.想像:

SOME_BOOST_PP_BLACK_MAGIC( (a)(b)(c) )
//             with cursor here ^
Run Code Online (Sandbox Code Playgroud)

Emacs的Mt会交换,bc导致(a)(c)(b).

有效的是/\w yiwNviwpnviwgp.但它败坏"""/.有更清洁的解决方案吗?

Update²:

解决了

:nmap gn :s,\v(\w+)(\W*%#\W*)(\w+),\3\2\1\r,<CR>kgJ:nohl<CR>
Run Code Online (Sandbox Code Playgroud)

不完美,但有效.

感谢Camflan将该%#项目引起我的注意.当然,它都在wiki上,但我没有意识到它可以解决精确问题(Emacs完全正确)重复transpose-words功能.

vim emacs usability editor

15
推荐指数
3
解决办法
3165
查看次数

重定向到同一个URL是否安全?

我有表格的网址http://domain/image/?uuid?/42x42/some_name.png.Web服务器(nginx)配置为查找文件/some/path/image/?uuid?/thumbnail_42x42.png,如果它不存在,则将URL发送到后端(Django via mod_wsgi),然后生成缩略图.然后后端发出302重定向到客户端请求的完全相同的URL,并认为在第二次请求时服务器将注意到缩略图文件并直接发送它.

问题是,这适用于所有浏览器吗?到目前为止,测试没有显示任何问题,但我能确定所有用户代理都会按预期解释这个吗?

更新:让我澄清意图.目前的工作原理如下:

  1. 客户端请求图像的缩略图.
  2. 服务器看到该文件不存在,因此它将请求转发给后端.
  3. 后端创建缩略图并返回302.
  4. 后端释放所有资源,让服务器将新生成的文件共享给当前和后续客户端.

让后端服务于新创建的映像更糟糕的原因有两个:

  1. 必须创建两种提供相同数据的方法;
  2. 服务器在提供静态内容方面要好得多.如果客户端链接速度极慢怎么办?后端不是特别快,也不是内存效率高,并且在给客户端换勺时将其保存在内存中可能会浪费.

所以我让后端工作的时间最短.

Update²:我非常感谢一些RFC参考或者有很多浏览器经验的人的意见.所有这些肯定的答案都令人愉快,但它们看起来毫无根据.

browser compatibility http

11
推荐指数
1
解决办法
2820
查看次数

为什么 std::tuple 调用 operator &lt;=&gt; 两次?

以下代码调用 operator <=> 两次,参数颠倒。但为什么?

GCC 10.2 和 clang 12 似乎都在使用 libstdc++-10,其 <tuple> 确实提供了运算符 <=>,因此它似乎不是缺少标准库支持的情况,我的代码必须不正确。如何解决?

#include <tuple>
#include <compare>
#include <iostream>

struct X {
    int i;
    auto operator <=>(X const& other) const {
        std::cout << this << " <=> " << &other << std::endl;
        return i <=> other.i;
    }
};

int main() {
    std::tuple{X{42}} <=> std::tuple{X{42}};
}
Run Code Online (Sandbox Code Playgroud)

c++ spaceship-operator

8
推荐指数
1
解决办法
78
查看次数

TeX:字符串解析和空白剥离

在T E X中,如何将字符串拆分\mana{X1 2W/UB R /G}成部分并将它们提供给另一个宏(在这种情况下,通过类似的方式替换宏调用\m{X}\m{12}\m{W/U}\m{B}\m{R/G}),通过非常简单的规则进行分组,即:a)连续数字形成一个组,b)斜线创建一组两个附近的字符,c)空格是否被完全剥离?

我尝试了这个substr包,但它没有太大帮助,只允许找到某些子串.手写循环如

\def\lcpass#1.{}
\def\lcloop#1#2.{%
    \ifempty{#2}%
        #1%
        \let\continue=\lcpass%
    \else%
        \let\continue=\lcloop%
    \fi%
    \continue#2.}

\def\lastchar#1{\lcloop#1.} % returns the last character of a string
Run Code Online (Sandbox Code Playgroud)

当字符串以空格结尾时无法工作,我也没有成功\futurelet.

一般来说,如何处理在T E X 中解析字符串的任务?例如,texmate包允许人们编写类似的内容|1 e4 e5 Nf3 Nc6|并自动绘制相应的国际象棋位置.它是如何做到的?关于字符串中的字符循环和其他类似的T E X黑客,我能读到什么?

latex tex

7
推荐指数
2
解决办法
3107
查看次数

在Python 3.5+中list()vs iterable unpacking

有没有之间的任何实际的差别list(iterable),并[*iterable]在支持后者的Python版本?

python iterable list python-3.x python-internals

6
推荐指数
1
解决办法
280
查看次数