我经常在vim中导航f x
以找到下一个字符'x',但忽略在我要编辑的单词和开始光标位置之间有一个单词(或更多单词)包含'x'.
所以我必须f x
再次,这有点烦人,因为有这个漂亮的按钮.
,它会重复最后一个命令.那么有没有办法f x
通过单按按钮重复.
如何输入Unicode字符, without copying it to the clipboard and pasting it?
Things I know:
ga
角色上的命令
gives me hex:0001d4ed
."+p
.<C-v>u
例如<C-v>u03b1
给出?
字符.它是否有助于编译器进行优化,或者仅仅是添加其他类型签名的剩余工作?例如,人们经常看到:
foo :: a -> b
foo x = bar x
where bar x = undefined
Run Code Online (Sandbox Code Playgroud)
而不是:
foo :: a -> b
foo x = bar x
where bar :: a -> b
bar x = undefined
Run Code Online (Sandbox Code Playgroud)
如果我省略顶级类型签名,GHC会给我一个警告,所以如果我没有收到警告,我相信我的程序是正确的.但是如果省略where子句中的签名,则不会发出警告.
我偶然发现了一件我不理解的事情.
如果我使用GHCi并使用getLine
我得到以下内容
Prelude> a <- getLine
Test<Backspace>oo<CR> -- the Backspace action results in a '^?'
Prelude> a
"Test\DELoo"
Run Code Online (Sandbox Code Playgroud)
如果我在Haskell文件中写相同的
module Main where
main :: IO ()
main = do a <- getLine
putStrLn a
Run Code Online (Sandbox Code Playgroud)
并使用runhaskell运行脚本并输入相同的输入,退格按预期删除't'.
为什么会有区别?
我想:x
在vim gui-mode中设置,delete buffer
因为我总是杀死整个gvim,这有点烦人.我知道我可以专门设置gui问题,if has("gui running")
但不知道如何重新映射:x
提前致谢
ps.:也许标签/术语remap
是错误的,但我不知道正确的术语,这就是谷歌没有提供任何帮助的原因.
我的Mac上没有.vimrc
,.gvimrc
文件和.vim/
目录,因此我无法安装任何脚本.当我创建一个文件夹.vim/
并.vim/plugin
粘贴任何脚本时,它不起作用.对不起我的英语不好.
前几天我在讨论函数式编程 - 特别是Haskell和一些Java/Scala人,他们问我Monads是什么,他们在哪里需要.
以及定义和例子并不是那么难- ,,Maybe Monad
等等,让每个人都至少部分,确定跟我说单子是一件好事.IO Monad
State Monad
但Monad需要在哪里 - Maybe
可以通过魔法值来避免,例如-1
在设置Integer
或""
设置中String
.我写了一个没有State
Monad 的游戏,这个游戏并不好,但是初学者就是这么做的.
所以我的问题是:Monads在哪里必要? - 根本无法避免.(并没有混淆 - 我喜欢Monads并使用它们,我只是想知道).
我想我必须澄清一点,我不认为使用"Magic Values"是一个很好的解决方案,但很多程序员都会使用它们,特别是在C语言或SHell的低级语言中,通常会返回错误-1
.
我已经清楚,不使用monad不是一个好主意.抽象通常非常有用,但也很复杂,因此许多人都在努力解决monad的概念.
我的问题的核心是,如果有可能做到,例如IO
,没有monad,仍然是纯粹和功能.我知道将一个已知的良好解决方案放在一边,以及用燧石和火种点燃火灾而不是使用打火机将是乏味和痛苦的.
文章@Antal SZ指的是很棒你可以发明monad,我浏览它,当我有更多时间时肯定会读它.更有启发性的答案隐藏在@Antal SZ提到的博客文章的评论中我记得monad之前的时间,这是我在问这个问题时所寻找的东西.
我在业余时间在Haskell编写词汇训练师.
我有一个文件,其中的条目被建模为代数数据类型,看起来像
Word { _frq=1
, _fra="le"
, _eng="the; him, her, it, them"
, _deu="der,die,das; er,sie,es"
, _uses=[Determiner [], Pronoun []]
, _phrase=" vive la politique, vive l'amour"
, _sentence="long live politics, long live love"
, _satz="Lang lebe die Politik, lang lebe die Liebe."
}
Run Code Online (Sandbox Code Playgroud)
通常是德语翻译,_deu=
并且_satz=
通常只是一个空字符串,我想在程序中更新.
现在我有几个问题:1.是否有一个使用Haskell数据类型的数据库用于haskell(我真的很喜欢在我的数据库中输入安全性)?我找到的东西是HDBC与MySQL之类的绑定,以及其他一些xml/JSON的东西.
和第三个问题
我想将学习的词汇保存在需要经常更新的数据结构中,因为在每个学习步骤中我更新一个表示该词知识的数字 - 并在插入/或之后对该数据结构进行排序.然后我根据它在这个数据结构中的位置选择一个新单词.对于进行完整列表遍历而言,列表似乎效率低下,如果有更好的解决方案,排序是一项很大的工作.最后一个注释我确实只有5000个列表条目,所以也许它担心速度在错误的位置?
如何获得更新嵌套属性的反应式组件:
我有一个 pinia 商店定义如下
import { defineStore } from "pinia"
export const useStore = defineStore({
id: "poc",
state: () => ({ str: "", nested: { obj: "" } }),
persist: {
enabled: true,
strategies: [{ storage: localStorage }],
},
})
Run Code Online (Sandbox Code Playgroud)
以及以下 vue3 组件
<script lang="ts">
import { ref } from "vue"
import { storeToRefs } from "pinia"
import { useStore } from "./store"
export default {
setup() {
const store = useStore()
const example = storeToRefs(store)
const mStr = ref(example.str) …
Run Code Online (Sandbox Code Playgroud) 我非常喜欢xmonad,但有一点会很棒:
如果我打开一个文件gvim -p --remote-tab-silent my-file
,它在vim中打开,它始终打开workspace 1
,我想自动切换到workspace 1
.
我刚刚发现了viewShift
-trick,但这只会在gvim
生成新内容时更改工作区,因此只是部分地解决了我的问题.
感谢Daniel Wagner的评论,我能够做一些研究:
我找到了一个小程序来设置和取消紧急提示:设置.而且xwininifo
我可以获得gvim的窗口ID.经过一些试验和错误后,我xprop
向我展示了提示标志实际设置了.
GVIMWINID=`xwininfo -tree -root | grep GVIM | cut -d ' ' -f6`
seturgent $GVIMWINID 1
xprop -id $GVIMWINID | grep urgency
Run Code Online (Sandbox Code Playgroud)
现在我补充道
import XMonad.Hooks.UrgencyHook
..
myKeys conf@(XConfig {XMonad.modMask = modm}) = M.fromList $
[..
, ((mod4Mask , xK_x ), focusUrgent)
..]
..
main = do¬
xmproc <- spawnPipe "/usr/bin/xmobar"¬
xmonad $ …
Run Code Online (Sandbox Code Playgroud)